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