可能是一个简单的问题,但我只有Linux来测试不需要__declspec(dllexport)的代码.在当前的代码中__declspec(dllexport)位于.h文件中的所有文件的前面,但就在cpp文件中50%的函数前面,所以我想知道它们是否真的需要在cpp文件中?
不,它只需要在标题中.
这是一个包含更多信息的链接.
继续Vinay所说的话,我经常看到一个宏定义
#if defined(MODULENAME_IMPORT) #define EXPORTED __declspec(dllimport) #elif defined(MODULENAME_EXPORT) #define EXPORTED __declspec(dllexport) #endif
然后在你的标题中你做
void EXPORTED foo();
在执行导入/导出的项目的项目设置中相应地设置定义.
不,在cpp文件中不需要它.只有在声明中才需要它.
例如,如果我有一个类CMyClass.如果我想导出这个,那么.h就会有
.h服务器代码
__declspec(dllexport)CMyClass {};
在客户端代码中,即使用此类,您必须将类声明为
客户代码
__declspec(dllimport)CMyClass;
//使用该类的代码