将c++代码打包成静态库,再通过cgo调用,一直链接不上。起初以为是cgo只能用gcc,而我的静态库是是用g++编译的,其实不然。
cgo调用c++库,只需要在cpp源代码 include 头文件的时候,加上 extern "C" 就行了。是啊,c++ 代码,因为重载函数等特性,会产生歧义,在编译的时候,编译器会修改函数名。然后cgo再用gcc去链接头文件的函数,肯定就链接不到。。
如果出现c++ 链接失败的问题,尝试加上 -lstdc++
添加 extern "C"
未添加 extern "C"