我对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 次 |
最近记录: |