C++ 移植到Linux错误:在‘;之前应为初始值设定项:’;代币
嗯,我有课C++ 移植到Linux错误:在‘;之前应为初始值设定项:’;代币,c++,linux,porting,C++,Linux,Porting,嗯,我有课 class DLL_LIB a: public b { } 海湾合作委员会说 “:”标记之前应为初始值设定项 我不明白为什么。也许这是链接DLL库的问题,但我这样做了: #ifdef _WIN32 #define DLL_LIB __declspec(dllexport) #else #define DLL_LIB __declspec(dllimport) #endif 虽然我做了假DLL库,但我无法避免“预期初始值设定项”的错误 多谢各位 您对DLL_LIB的定义是错误的。
class DLL_LIB a: public b
{
}
海湾合作委员会说
“:”标记之前应为初始值设定项
我不明白为什么。也许这是链接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导出”(由\uu declspec(dllexport)
表示,并且在构建DLL时必须存在)和“符号从DLL导入”(由\uu declspec(dlliport)
表示,并且在链接DLL的程序中包含标头时必须存在)
在Linux上,没有这样的东西,因此必须由预处理器从头中删除宏-因此将其定义为空。您对
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导出”(由\uu declspec(dllexport)
表示,并且在构建DLL时必须存在)和“符号从DLL导入”(由\uu declspec(dlliport)
表示,并且在链接DLL的程序中包含标头时必须存在)
在Linux上,没有这样的东西,因此必须由预处理器从标头中删除宏-因此将其定义为空。您使用的是MS特定关键字您使用的是MS特定关键字