c和c++混合编译时报错找不到符号
c源文件导出了一个原型为func(SET_ABC *v)的函数到动态库和头文件func.h
c++源文件引用了func.h,编译后程序运行时链接上述动态库,报错找不到_Z12funcP16_tag_SetAbc函数
原因是c++把func里的函数弄成了c++那种带签名的符号,c编译成的动态库里自然找不到这个符号
这就是extern "C"的作用
用
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
把上述c库导出的函数包起来,就会按c语言的格式去编译了
原文地址:https://blog.csdn.net/weixin_44919664/article/details/136465377
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!