3

多くのコード変更を行った後、VS2008 を使用して WinCE7.0 用の Qt をビルドしようとしましたが、メイン ライブラリを正常にコンパイルしました。

QtScript ライブラリのコンパイル中に、次のリンカ エラーを受け取りました。

1>Linking...
1>   Creating library ..\..\lib\QtScript4.lib and object ..\..\lib\QtScript4.exp
1>BytecodeGenerator.obj : error LNK2019: unresolved external symbol __imp__Inf referenced in function "public: static double __cdecl QTWTF::FloatHashTraits<double>::emptyValue(void)" (?emptyValue@?$FloatHashTraits@N@QTWTF@@SANXZ)
1>Executable.obj : error LNK2001: unresolved external symbol __imp__Inf
1>MathObject.obj : error LNK2001: unresolved external symbol __imp__Inf
1>DateMath.obj : error LNK2019: unresolved external symbol __imp__Nan referenced in function "double __cdecl QTWTF::parseDateFromNullTerminatedCharacters(char const *,bool &,int &)" (?parseDateFromNullTerminatedCharacters@QTWTF@@YANPBDAA_NAAH@Z)
1>JSValue.obj : error LNK2001: unresolved external symbol __imp__Nan
1>..\..\lib\QtScript4.dll : fatal error LNK1120: 2 unresolved externals

どのライブラリとリンクするのを逃したのか、まったくわかりません!

ありがとう

4

1 に答える 1

1

Windows を使用している場合は、MSVS でビルドしていると想定します。私はよく、デフォルトのライブラリを使用せずにプロジェクトを開始します。たまたま別のライブラリの「手の届かない」領域に触れた場合は、必要なものを追加していきます。

幸いなことに、MSVS はこれを支援してくれます。VERBOSE コンパイル ステータスをオンにして、アクセスしようとしているライブラリを確認し、それらを追加します。プロジェクト、リンカーを右クリックし、進行状況を表示 -> VERBOSE を選択します。

もう1つの方法は、MSDNでMicrosoft関数をチェックし、それらが宣言されているlibを確認して追加することです(出力ウィンドウが貧弱な場合、VERBOSEはやり過ぎになる可能性があるため)。Qt に詳細なリファレンス ドキュメント (libs も記載) があるかどうかはわかりませんが、試してみる価値はあります。

他のすべてが失敗した場合は、Qt が必要とする可能性のあるすべてのライブラリを追加し (IGNORE STANDARD LIBS が無効になっていることを確認してください)、VERBOSE をチェックして、それらのみをリストに保持します。

プロジェクトにすべてのライブラリがあると仮定すると、別の問題は依存関係の不一致です (ソリューションを右クリックし、プロジェクトを起動 -> 必要なものを選択し、[プロジェクトの依存関係 -> 指定したライブラリの各依存関係をマップします)。

また、extern をインポートするときに、lib が Linker->Input で定義されていることを確認してください。

ただし、ソースを変更した場合 (新しい関数/グローバル変数または静的変数を追加するか、関数シグネチャを変更した場合)、未解決の外部参照は、関数/変数定義に関連付けられた本体がないことを意味します。実装するか、定義に { } を追加します。その場合は、エラーメッセージから関数/変数を確認してください。

于 2011-12-26T17:26:43.810 に答える