库、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

再重新编译库即可。

目录
相关文章
|
6月前
|
编译器 Shell C++
在编译的两个.o文件中有对同一个头文件的引用,因此在链接时出现结构体重复定义的问题怎么解决
在编译的两个.o文件中有对同一个头文件的引用,因此在链接时出现结构体重复定义的问题怎么解决
158 2
|
7月前
|
编译器 C++
VS编译器对scanf函数不安全报错的解决办法(详细步骤)
VS编译器对scanf函数不安全报错的解决办法(详细步骤)
|
网络协议 C# C++
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
497 0
|
芯片 C++
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
1252 0
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
|
C++
库、dlopen、函数名都正确,dlsym出错了,怎么回事
库、dlopen、函数名都正确,dlsym出错了,怎么回事
137 0
函数参数缺少const导致so无法加载
函数参数缺少const导致so无法加载
61 0
解决办法:C代码中明明有,为什么编译时提示未定义的引用
解决办法:C代码中明明有,为什么编译时提示未定义的引用
383 0