我为静态库做了一个构建,然后放在一个位置。现在,当我构建我的源代码时,我得到UNDEFINED REFERENCES
用于库间调用。例如:
的未定义引用
/home/xyz/lib/libA.a(ClassA.a)
:对classB::funB()
此处classB.a
也是一个静态库。
在我的源代码项目文件中,静态链接顺序为:
LIBS+= -lclassB -lclassA
现在当我反转库顺序时,我开始在库B的类中获取库A中的函数调用错误。
答案 0 :(得分:2)
对于这种情况,您通常需要例如。
LIBS += -lclassA -lclassB -lclassA
将classA库链接两次有助于解决循环依赖关系。
答案 1 :(得分:0)
好的朋友,我找到了解决方案。
我在gcc上使用qmake构建工具,我只是要告诉qmake我的一些静态库是循环依赖的。
所以我用qmake链接器标志修改了我的.pro文件
QMAKE_LFLAGS += -Wl , --start-group --end-group
gcc的文档说你需要把你的档案名称放在--start-group --end-group之间,但是qmake足够聪明,可以找到依赖的库,并且会自动完成。
玩得开心。