我看到过一个使用GCC链接C++共享库的例子,但我自己无法复制它。因此,首先我创建了一个带有测试函数的C++库:
g++ -shared -o libtest.so test.c
然后我有一个测试主函数调用库函数,并像这样编译
gcc -o prog.out main.c -L. -ltest
然后我收到了错误提示。
undefined reference to 'testfunc'
我认为这是由于库中引用不同导致的... C命名函数为testfunc,而C++命名函数为[some stuff]__testfunc[maybe again some stuff]。
我还尝试使用
gcc -o prog.out main.c -l:libtest.so
但这导致了同样的错误。
因此,我的问题是:如何将c++库与gcc链接到c文件中?
更新:我知道可以使用
extern "C"
,但这并不是解决的方式。也许有一些链接器参数可以代替?更新2:刚才想到,第一部分可能只是用c++编译并链接到gcc上。也尝试过这种方法:
g++ -c testlib.c -o testlib.o
gcc -shared -o libtest.so testlib.o
gcc -o prog.out -l:libtest.so
仍然不起作用。标志有问题吗?