首先,使用C++代码编译了一个静态链接库libmy.a. 然后在另外一个C语言的项目中去调用此静态库,结果出现如下错误:
/usr/bin/ld: libmy.a(message_mm.o): undefined reference to symbol ‘_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3’
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
makefile:36: recipe for target ‘main’ failed
make: * [main] Error 1
在C语言的项目中,makefile使用的是gcc来编译和链接,因此怀疑是C与C++链接时的兼容问题,于是在C项目中改用g++,果然没有问题了。