我需要在 Mac OS X 中在运行时动态链接到库函数。按照Apple 的示例,我声明了一个函数指针并将其分配给 dlsym() 的结果。以下示例成功编译为纯 C (.c) 文件。但我需要在 C++ 文件中使用它,如果我将此示例编译为 C++ 文件 (.cpp),clang 编译器会告诉我
无法使用“void ”类型的右值初始化“void ()(char *)”类型的变量
为什么它在普通的“C”中工作,我该如何解决这个问题?
#include <dlfcn.h>
void Test() {
// Load the library which defines myFunc
void* lib_handle = dlopen("myLib.dylib", RTLD_LOCAL|RTLD_LAZY);
// The following line is an error if compiled as C++
void (*myFunc)(char*) = dlsym(lib_handle, "myFunc");
myFunc("Hello");
dlclose(lib_handle) ;
}