2

嗯,我有课

class DLL_LIB a: public b
{

}

gcc 说

':' 标记之前的预期初始化程序

我不明白为什么。也许这是链接 DLL 库的问题,但我这样做了:

#ifdef _WIN32
#define DLL_LIB __declspec(dllexport)
#else
#define DLL_LIB __declspec(dllimport)
#endif

虽然我制作了假的 DLL 库,但我无法避免“预期初始化程序”的错误

十分感谢!

4

1 回答 1

4

你的定义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 上,没有这样的东西,因此必须由预处理器从标头中删除宏 - 因此将其定义为空。

于 2013-05-11T11:01:39.543 回答