我已将 TinyXML 构建为静态库:libxmltiny.a
一个简单的测试程序:
#include <tinyxml/tinyxml.h>
void main()
{
TiXmlDocument doc;
doc.Parse("");
}
两者都使用相同的 g++ 编译器编译,即:
arm-unknown-linux-uclibcgnueabi-g++ 4.6.2
如果我删除库文件,链接器报告它找不到文件,所以我们知道它找到了文件(我们知道下面的 objdump 在同一个文件上)。
(几个中的第一个)友好错误是:
test.cpp:(.text.startup+0x58): 未定义对 TiXmlDocument::TiXmlDocument() 的引用
如果我用以下方式抑制去杂化-Xlinker --demangle=none
:
test.cpp:(.text.startup+0x58): 未定义引用 _ZN13TiXmlDocumentC1Ev
像这样转储库文件:
$ objdump -t libtinyxml.a | grep _ZN13TiXmlDocumentC1Ev
产生:
00002810 g F .text 000000ac _ZN13TiXmlDocumentC1Ev
所以符号显然存在于库文件中!
一些谷歌搜索建议我更改库顺序,但它是唯一链接到的库(当然除了运行时库)。
我已经为另一个项目构建并链接了这个库,该项目是 g++ 的 powerpc 版本。
我没有更多的猜测了。我可能在这里缺少什么?