2011-07-31 23 views
1

私は静的ライブラリ用のビルドを行い、ある場所に配置しました。今私は私のソースを構築するときに私はUNDEFINED REFERENCESインターライブラリ呼び出しを取得します。循環リンクされた静的ライブラリ(linux)未定義ライブラリ

/home/xyz/lib/libA.a(ClassA.a):たとえば、ここclassB::funB()

classB.aへの未定義の参照は、静的ライブラリです。私のソースのプロジェクトファイルに

静的リンクの順序は次のとおりです。

LIBS+= -lclassB -lclassA 

私は図書館を逆にするとき今、関数は、ライブラリのA.

答えて

2

内で呼び出すために、私は、ライブラリBのクラスでエラーを取得開始注文しますあなたが一般的に必要とするこの種の状況

LIBS += -lclassA -lclassB -lclassA 

classAライブラリを2回リンクすると、循環依存関係の解決に役立ちます。

0

私は解決策を見つけました。

gccでqmakeビルドツールを使用していましたが、静的ライブラリの一部が循環依存であることをqmakeに伝えるだけです。

だから私は

QMAKE_LFLAGS += -Wl , --start-group --end-group 

GCCのマニュアルでは、--start-グループ--end-群との間にアーカイブ名を配置する必要があると述べているが、スマートqmakeのあるqmakeのリンカーフラグと私の.PROファイルを修正しました依存するlibsを見つけるのに十分であり、それを自動的に行います。

お楽しみください。

関連する問題