我对Windows中的C++中的dllexport,dllimport有一些疑问.让我们假设我有一些module.cpp和module.h使用哪些导出函数dllexport.让我们假设我也有moduleWrapper.cpp和moduleWrapper.h从进口功能module.cpp使用dllimport.
有人可以解释为什么我会想念#include module.h我moduleWrapper.cpp和我的写作moduleWrapper.h.我无法理解链接器如何知道module.cpp中的函数地址,提前感谢任何解释
小智 7
根据我的理解,你在module.h中有这样的东西:
__declspec(dllexport) void f();
Run Code Online (Sandbox Code Playgroud)
然后,您在moduleWrapper.cpp中有类似的声明:
__declspec(dllimport) void f();
Run Code Online (Sandbox Code Playgroud)
这被视为函数声明,因此您不需要包含module.h.通常的方法是将以下代码放入包含文件中:
#ifdef PROJECTNAME_EXPORTS // (the default macro in Visual Studio)
#define PROJECTAPI __declspec(dllexport)
#else
#define PROJECTAPI __declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
然后在头文件中声明您的函数,如下所示:
PROJECTAPI void f();
Run Code Online (Sandbox Code Playgroud)
这样,当您编译DLL时,它将转换为dllexport,并且在任何不属于您的DLL且恰好使用标头的文件中进行dllimport.
| 归档时间: |
|
| 查看次数: |
1171 次 |
| 最近记录: |