重複の可能性:
Windows & C++: extern & __declspec(dllimport)
なぜ/いつ __declspec( dllimport ) が必要ないのですか?
DLL プロジェクトを作成したいと考えています。このプロジェクトには、いくつかの DLL が含まれています。それらは依存しています。次のようないくつかのマクロを定義します。
#ifdef MYDLL_DECL1
#define DLL_DECL __declspec(dllexport)
#else
#define DLL_DECL __declspec(dllimport)
#endif
モジュールごとに MYDLL_DECL1...MYDLL_DECLn を定義しました。同じマクロを定義しても動かないと思ったからです。しかし、本当にマクロを 1 つだけ定義したいので、テストベッドを作成しました。私は2つのモジュールを持っています。2番目のモジュールのソースファイル。次のようなコードを書きます。
#define MYDLL_DECL
#include "moudle1.h"
#include "moudle2.h"
同じマクロ名「MYDLL_DECL」を使用すると、modle1 のヘッド ファイルに「MYDLL_DECL」が定義されているため、「DLL_DECL」は「__declspec(dllexport)」と等しくなります。実際には、module2 では "__declspec(dllimport)" と等しいはずです。module2 は module1 をインポートするためです。 しかし、2 つのモジュールに対して同じマクロを定義するだけで機能することがわかりました。また、OpenCVもこのメソッドをそのライブラリに使用していることがわかります