库、dlopen、函数名都正确,dlsym出错了,怎么回事

简介: 库、dlopen、函数名都正确,dlsym出错了,怎么回事

 感觉自己哪里都对:库编译通过,位置也对,dlopen()正确打开库,函数名(比如函数名是mainForMac)也正确,结果到了dlsym出错了,怎么回事?


原因

 显然,库是c++编译的,实际上函数名在内部已经发行了变化。这个时候mainForMac可能变成了mainForMacZ3之类。当然了,试图使用新的函数名也是错误想法。


解决办法

 应该这样声明mainForMac:

#ifdef __cplusplus
extern "C"{
#endif
int mainForMac(const int argc, const char**argv);
#ifdef __cplusplus
}
#endif

再重新编译库即可。

目录
相关文章
|
7月前
|
小程序 安全 算法
mPaaS问题之使用小程序传参数报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
113 2
|
网络协议 C# C++
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
Mgo
|
Shell Go
go调用shell命令两种方式实现(有无返回值)
go调用shell命令两种方式实现(有无返回值)
Mgo
1609 1
|
芯片 C++
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
1195 0
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
函数参数缺少const导致so无法加载
函数参数缺少const导致so无法加载
57 0
解决办法:C代码中明明有,为什么编译时提示未定义的引用
解决办法:C代码中明明有,为什么编译时提示未定义的引用
362 0
|
C++
库、dlopen、函数名都正确,dlsym出错了,怎么回事
库、dlopen、函数名都正确,dlsym出错了,怎么回事
297 0