0

私はビジュアル スタジオで Qt と Cryengine を使用しています。私はこのような大規模なプロジェクトにはまったく慣れていませんが、実際にこのエンジンに何かを追加するところまで来ています。私のコードは 1 つずつコンパイルされますが、「インディー ゲーム」プロジェクトをコンパイルしようとするとリンク エラーが発生し、調査しても解決方法がわかりません。そのファイルを削除すると、プロジェクトはリンクエラーなしで正常にコンパイルされるため、エラーがコード InventoryGUI に関連していることはわかっています。

これは私の InventoryGUI コードであり、インディー ゲームをビルドしようとしたときに表示されるエラーです http://imgur.com/hzmGdvH

これは、インクルードするヘッダー ファイルです。 http://imgur.com/o22GHXg

皆さんがこれについて与えることができる助けに感謝します。もちろん、私のコードの別の部分を見る必要がある場合は、私に知らせてください。それも投稿します。

ありがとう

編集:関数「createInventory()」が別のプロジェクトから関数InventoryGUIを呼び出すことを追加するのを忘れました。プロジェクト間を移動することがエラーの原因である可能性が非常に高いと思います。

4

1 に答える 1

0

クラスがInventoryGUI共有ライブラリ (「dll」) で定義され、実行可能ファイルで使用されている場合は、そのシンボルをエクスポートする必要があります (Windows ビルド上)。次のようなものを試してください:

#ifdef WIN32
#   ifdef MY_LIB_EXPORTS
#      define MY_LIB_DLL   __declspec(dllexport)
#   else
#      define MY_LIB_DLL   __declspec(dllimport)
#   endif
#else
#   define MY_LIB_DLL
#endif

class MY_LIB_DLL InventoryGUI
{
...
};

次に、ライブラリ定義InventoryGUIは定義されているはずMY_LIB_EXPORTSです。たとえば、pro ファイル システムを使用する場合、次のようになります。

DEFINES += MY_LIB_EXPORTS

他のプロジェクトはすべきではありません。ライブラリの他のクラスにも同様のメカニズムがあるかどうかを確認してください。

于 2013-06-13T19:32:43.247 に答える