複数の dll に複数のクラスがあり、各 dll には他のクラスが含まれている場合があります。
__declspec
dll のすべてのヘッダーのパラメーターを指定するために、次のマクロを使用します。
#ifdef DLL_UTIL_A
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif
dllA に dllB が含まれているとします。問題は、dllB のヘッダー ファイルを dllA にインクルードすると、dllB のヘッダー ファイルDLLEXPORT
からクラスをインポートするようにマクロが再定義されることです。プリプロセッサが解析を続行するために dllA に戻るDLLEXPORT
と、不要な値が更新されて更新されます。
dll ごとに異なる定義を使用する必要がありますか (例: replace DLLEXPORT
by )、またはdllA に戻るときに の古い値DLLEXPORT_DLL_A
を取得するクリーンな方法はありますか?DLLEXPORT