原先总是将vs自动生成的代码去掉,例如下面:
#ifdef REGDLL_EXPORTS
#define REGDLL_API __declspec(dllexport)
#else
#define REGDLL_API __declspec(dllimport)
#endif
感觉自己写__declspec(dllexport)更直接,而且导出类时还不用定义这个宏。
今天遇到一个问题,恰恰就是这个宏定义不能省略的问题。
导出类时:
1、当你的类的成员中有静态变量时,必须试用上面的定义,而且在调用导出类前面添加这个宏定义的头文件。
否则这个宏没有定义,调用程序中忽略这个定义。然后出现C2470(...看起来象函数定义但是没有参数列表...)的错误。
2、当你的类的成员中有静态变量时,使用 __declspec(dllexport)会出现链接错误,找不到那个静态成员变量。
看来,自动生成的代码也很重要!!!