我已将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
产地:
<00> 00002810 g F .text 000000ac _ZN13TiXmlDocumentC1Ev
因此符号清楚地存在于库文件中!
一些谷歌搜索建议我更改库顺序,但它是链接到的唯一库(当然不是运行时库)。
我已经为另一个项目构建并链接了这个库,这个项目是g ++的powerpc版本。
我没有更多的猜测。我可能会在这里失踪什么?