2

我已将 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 版本。

我没有更多的猜测了。我可能在这里缺少什么?

4

0 回答 0