C/C++教程

C++ 动态加载

本文主要是介绍C++ 动态加载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  动态库打开正常,但是查找函数时失败。

handle = dlopen("/home/zhq/c++/loadmodual/libhello.so",RTLD_NOW|RTLD_LOCAL);
if (handle == NULL) {
cout<<"load error."<<endl;
return ;
}
dlerror();
onload = (void (*)()) dlsym(handle,"hello_world");

运行报错:

./libhello.so: undefined symbol: hello_world
load error1.

    是由于C++编译时生成的函数名与C不一致,导致dlsym不能识别到目标函数。

解决办法:

  动态库函数声明时,加上extern "C"

#ifdef __cplusplus
extern "C"{
#endif

void hello_world();

#ifdef __cplusplus
}
#endif

这篇关于C++ 动态加载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!