g++直接链接gcc生成的静态库文件,会出现以下错误:
[search@SY-0187 test]$ g++ test.cpp -o test -L. -lmyhelloc
/tmp/cc83gjbt.o: In function `main':
test.c:(.text+0x5): undefined reference to `hello()'
collect2: ld returned 1 exit status
找不到静态库中的函数,原因是:
| c++的函数名的生成和c的函数名的生成不同,在c中只根据函数名和调用约定、c++还要加上参数类型列表,所以c++编译器无法找到函数。 解决办法:只要用extern “C” 告诉编译器使用c语言的函数名字修饰技术就可以了。 |

当尝试使用g++链接gcc编译产生的静态库时,会遇到错误。解决办法是在引用C库的cpp文件中,对C库函数声明使用extern "C"来避免名称修饰问题。
最低0.47元/天 解锁文章
1634

被折叠的 条评论
为什么被折叠?



