首页 > 编程语言 > 详细

C++ 动态加载

时间:2021-09-02 14:52:17      阅读:30      评论:0      收藏:0      [点我收藏+]

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

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++ 动态加载

原文:https://www.cnblogs.com/zzzzhq/p/15213866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!