ので、一般的な(少なくとも、VS 2005人の状態)の方法は次のとおりです。DLLと静的ライブラリの両方に同じヘッダーファイル
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API MyClass {
...
};
私はちょうど私を構築してる場合、これは素晴らしい作品DLLとしてのコード。しかし、静的ライブラリまたはDLLを使用するオプションが必要です。今明らかになっている(ひどい)解決策は、すべてのコードをコピーし、DLL 'MY_API'を削除することです。では、コマンドラインを使ってDLLを定義するか、定義しない方がよいでしょう。しかし、静的ライブラリの場合、「MY_API」は何をすべきでしょうか?
#ifdef DLL_CONFIG
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
#else
#define MY_API // What goes here?
#endif
class MY_API MyClass {
...
};
は、今これは(すなわち。彼らは「DLL_CONFIG」を定義する必要があります)図書館の利用者は、ヘッダファイルが含まれている場合に問題があるだろうに行うことができると仮定しますか?