6

前の質問で言ったように、Qt プロジェクトを VC++ から QtCreator に移植する予定です。

プロジェクトは 4 つのサブプロジェクトで構成されています。そのうちの 3 つはライブラリで、最後の 1 つは exe を作成します。サブプロジェクトは階層化されています。つまり、各レイヤーには、その下のレイヤーへのコンパイル時およびリンク時の依存関係があります。

ファイルは次のように編成されています。

root
  lib1
  lib2
  lib3
  main

QtCreator で各サブプロジェクトをゼロから作成しました。各フォルダーには、同じ名前の pro ファイルが含まれています (例: lib1 -> lib1.pro)。このアプローチを使用して、実行可能ファイルをリンクする必要がある最後のプロジェクトを除くすべてのプロジェクトをビルドしました。pro ファイルを手動で編集し、以下のコードを追加することで修正したリンカ エラーが発生していました。

LIBS +=  ../path/lib1.a \
   ../path/lib2.a \
   ../path/lib3.a

lib2 と lib1 からのシンボルが見つからないと lib3 が不平を言うことを除けば、すべて問題ありません。lib2.pro ファイルに LIBS を追加しても機能しません。

QtCreator がライブラリと実行可能ファイルを操作する方法を理解していないように感じます。このようなプロジェクトをどのように編成して、正しくコンパイルおよびリンクできるようにしますか?

4

2 に答える 2

4

この問題にもう少し取り組んだ後、GCC ツール チェーンではリンカー パラメータの順序が重要であることを思い出しました。

LIBS エントリを逆にするとうまくいきました。

于 2009-06-30T14:27:12.353 に答える
3

あなたが答えを見つけたことを嬉しく思います。以下を追加することもできます。

CONFIG += ordered

ルート ディレクトリの .pro ファイルにコピーします (「SUBDIRS」プロファイルでのみ有効です)。qmake は、すべての状況でリストした順序を保持する Makefile を生成するように強制されます。

于 2009-06-30T14:50:31.683 に答える