C++ 如何在C++;

C++ 如何在C++;,c++,dlsym,C++,Dlsym,最近,我用g++-Wpedantic检查了我以前转换成c++的代码,并且一直在修复大部分问题,当我遇到一些我无法处理的问题时: typedef int32_t (*myfunc)(uint32_t*, uint16_t*, uint32_t); myfunc mf = 0; int main() { mf = (myfunc) dlsym(so_lib, "myfunc"); return 0; } 使用-Wpedantic,我收到以下警告: dynamic_link.cpp

最近,我用g++-Wpedantic检查了我以前转换成c++的代码,并且一直在修复大部分问题,当我遇到一些我无法处理的问题时:

typedef int32_t (*myfunc)(uint32_t*, uint16_t*, uint32_t);
myfunc mf = 0;

int main() {
    mf = (myfunc) dlsym(so_lib, "myfunc");
    return 0;
}
使用-Wpedantic,我收到以下警告:

dynamic_link.cpp: warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object [enabled by default]
mf = (myfunc) dlsym(so_lib, "myfunc");
                                    ^

请帮助,我如何更改代码以满足编译器的要求并防止出现此警告

你可以试试这个例子。这是C++中一个18年的缺陷:可耻。试试
*(void**)(&mf)
。当编译为C(使用
-pedantic
)时,你没有得到同样的警告吗(除了使用“ISO C”而不是“ISO C++”)?无法使用gcc 5.1.0复制-没有警告