【发布时间】:2010-04-16 21:31:16
【问题描述】:
我正在创建一个应用程序,它由两个静态库和一个可执行文件组成。
让我们调用两个静态库: libusefulclass.a libcore.a
以及应用程序: 我的应用程序
libcore 实例化并使用 libusefulclass 中定义的类(我们称之为 UsefulClass)
现在,如果我通过以下方式链接应用程序:
g++ -m64 -Wl,-rpath,/usr/local/Trolltech/Qt-4.5.4/lib -o myapp src1.o src2.o srcN.o -lusefulclass -lcore
链接器抱怨找不到 libusefulclass 中的方法:
undefined reference to `UsefulClass::foo()'
等等
我找到了解决方法: 如果 UsefulClass 也在可执行文件本身的源文件中被实例化,则应用程序的链接没有任何问题。
我的问题是:有没有更简洁的方法让 libcore 引用 libusefulclass 中定义的方法,或者静态库不能相互链接?
TIA
P.S.:如果重要的话:应用程序是使用 Qt 在 C++ 中开发的,但我觉得这不是 Qt 问题,而是一般的库问题。
【问题讨论】: