嗨,我有点与dllexport混淆了。当我在类中使用__declspec(dllexport)时
#define DllExport __declspec( dllexport )
class DllExport C {
int i;
virtual int func( void ) { return 1; }
};
我将C类导出到dll文件还是从dll文件导出C类?
最佳答案
编译DLL时,您必须像以前那样编写__declspec(dllexport)
。这告诉编译器您希望将其导出。使用DLL时,您需要在包含的文件中添加__declspec(dllimport)
。然后,编译器知道此函数和类在DLL文件中,需要导入。由于您不想太多更改头文件,因此应定义一个宏,例如BUILD_DLL
。
#ifdef BUILD_DLL
#define DLL_PORTING __declspec(dllexport)
#else
#define DLL_PORTING __declspec(dllimport)
#endif
现在,您在example.h中编写:
class DLL_PORTING example_class { … };
在您的.exe文件中,仅包含您需要的头文件,一切将正常进行。