嗯,我有课
class DLL_LIB a: public b
{
}
gcc 说
':' 标记之前的预期初始化程序
我不明白为什么。也许这是链接 DLL 库的问题,但我这样做了:
#ifdef _WIN32
#define DLL_LIB __declspec(dllexport)
#else
#define DLL_LIB __declspec(dllimport)
#endif
虽然我制作了假的 DLL 库,但我无法避免“预期初始化程序”的错误
十分感谢!
你的定义DLL_LIB
是错误的。它应该是这样的:
#ifdef _WIN32
#ifdef BUILDING_DLL_LIB
#define DLL_LIB __declspec(dllexport)
#else
#define DLL_LIB __declspec(dllimport)
#endif
#else
#define DLL_LIB
#endif
本练习的目的如下:
在 Windows 上,您需要区分“符号从此 DLL 导出”(由 表示,__declspec(dllexport)
并且在构建 DLL 时必须存在)和“符号从 DLL 导入”(__declspec(dllimport)
由链接 DLL 的程序中的标头)。
在 Linux 上,没有这样的东西,因此必须由预处理器从标头中删除宏 - 因此将其定义为空。