可能重复:
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 。因为我认为如果我定义相同的宏,它就行不通。但我真的只想定义一个宏,我写了一个测试台。我有两个模块。在第二个模块的源文件中。我编写如下代码:
#define MYDLL_DECL
#include "moudle1.h"
#include "moudle2.h"
如果我使用相同的宏名称“MYDLL_DECL”,对于model1的头文件我定义了“MYDLL_DECL”,所以“DLL_DECL”等于“__declspec(dllexport)”。实际上在 module2 中它应该等于“__declspec(dllimport)”,因为 module2 导入 module1。 但是当我为两个模块定义相同的宏时,我发现它起作用了。而且我还发现 OpenCV 也将这种方法用于其库