嗨,我有点与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文件中,仅包含您需要的头文件,一切将正常进行。

10-08 04:11