gpt4 book ai didi

c++ - 错误 : invalid conversion from `void*` to `void (*)()` in case of dlsysm

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:30 24 4
gpt4 key购买 nike

我正在创建剪切对象并使用 dlsysm() 打开,但出现以下错误:

error: invalid conversion from "void*" to "void (*)()"

这是我的代码:

#include<iostream>
#include<dlfcn.h>
using namespace std;

int main() {
void (*fnptr)();
void *handle;

handle = dlopen("./libtestshared.so",RTLD_LAZY);
if (!handle) {
cerr << "Cannot open library: " << dlerror() << '\n';
} else {
cout<<"Opening"<<'\n';
}

fnptr = dlsym(handle , "fun");

return 0;
}

最佳答案

由于dlsym 可以返回一个指向任何签名函数的指针,它的设计者选择返回一个不透明的void*。当然,dlsym 的工作假设是这样的 void* 然后可以安全地转换为正确的函数指针类型。这是按如下方式完成的:

auto fnptr = reinterpret_cast<void(*)()>(dlsym(handle , "fun"));

关于c++ - 错误 : invalid conversion from `void*` to `void (*)()` in case of dlsysm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com