4

dll のヘッダーを次のように分類しているにもかかわらず、一貫性のない dll リンケージがあるといういくつかの警告が表示されます。

#ifdef MY_ENGINE_EXPORTS
#define ENGINE __declspec(dllexport)
#else
#define ENGINE __declspec(dllimport)
#endif

MY_ENGINE_EXPORTS をプリプロセッサ定義に追加すると、エラーを取り除くのに問題なく動作しますが、ビルド/エクスポート時にこれを自動的に行う必要があるという印象を受けました。私はそれを間違って表現していますか?プロジェクトは「my engine」などの 2 つの単語であるため、アンダースコアを含めました。MY_ENGINE_EXPORTS と MYENGINE_EXPORTS の両方で試しましたが、どちらもうまくいかないようです。

私が言うように、プリプロセッサの定義に追加することはできますが、なぜそれが本来の動作をしないのか、私を悩ませています。

4

1 に答える 1

3

環境がdllプロジェクト用に作成した定義済みのマクロだと思いました

はい、Win32 プロジェクト テンプレートを使用して DLL プロジェクトを開始すると、これが発生します。ウィザードは、PROJECTNAME_EXPORTS プリプロセッサ定義を自動的に追加します。

しわは、シンボルにスペースを使用できないため、「MY PROJECT_EXPORTS」を使用できないことです。スペースが削除され、MYPROJECT_EXPORTS になります。これは、使用した MY_PROJECT_EXPORTS と一致しません。もちろん、簡単な Edit + Replace で修正できないものはありません。

于 2013-03-13T00:26:04.437 に答える