【发布时间】:2012-06-25 06:38:05
【问题描述】:
我看到一个带有 C++ 共享库的 GCC 链接,但我无法自己复制它。所以首先我创建了一个带有 testfunction 的 C++ 库:
g++ -shared -o libtest.so test.c
然后我有一个测试主函数,它调用库函数并像这样编译它
gcc -o prog.out main.c -L. -ltest
然后我收到错误
undefined reference to 'testfunc'
我认为这是由库中的不同引用引起的...C 将函数命名为 testfunc,而 C++ 将函数命名为 [一些东西]__testfunc [也许又是一些东西]。
我也试过
gcc -o prog.out main.c -l:libtest.so
但这会导致同样的错误。
因此,我的问题是:如何将带有 gcc 的 c++ 库链接到 c 文件?
更新:我知道我可以使用extern "C",但这不是解决问题的方法。也许链接器有一些参数?
Update2:只是认为第一部分也有可能只是用 c++ 编译并与 gcc 链接。也试过这个:
g++ -c testlib.c -o testlib.o
gcc -shared -o libtest.so testlib.o
gcc -o prog.out -l:libtest.so
还是不行。标志有问题吗?
【问题讨论】:
-
“这不是解决方法”是什么意思?我告诉你,是解决问题的方式,除非有什么你没有告诉我们。
-
@Dietrich Epp 看起来就像我在 Update2 中写的那样。而且我确信它没有完成'extern' - 如果你想看看这个项目:openjdk
标签: c++ c linker shared-libraries