使用 __declspec( dllexport )
Using __declspec( dllexport )
嗨,我对 dllexport.When 有点困惑,我在 class
中使用 __declspec( dllexport )
#define DllExport __declspec( dllexport )
class DllExport C {
int i;
virtual int func( void ) { return 1; }
};
我是将 class C 导出到 dll 文件还是从 dll 文件导出 C class?
在编译 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 文件中,只需包含您需要的头文件,一切都会正常进行。
嗨,我对 dllexport.When 有点困惑,我在 class
中使用 __declspec( dllexport ) #define DllExport __declspec( dllexport )
class DllExport C {
int i;
virtual int func( void ) { return 1; }
};
我是将 class C 导出到 dll 文件还是从 dll 文件导出 C class?
在编译 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 文件中,只需包含您需要的头文件,一切都会正常进行。