在Debug模式下编译,正常。但是切换到Release模式下编译,就出现了这个错误提示。
首先,作为一个dll工程,对外导出时,应是__declspec(dllexport),而非__declspec(dllimport)。
其次,查了一下我的dll工程,是采用了AFX_EXT_CLASS宏,来作为类的导出声明。但是这个AFX_EXT_CLASS是为了在主工程(调用dll工程)和dll工程,根据_AFXEXT宏,而为"__declspec(dllimport)"(主工程使用) 还是"__declspec(dllexport)"(dll工程使用)。
最后,比较了一下Debug模式和Release两种模式下的“预处理器”,发现Debug模式下有_AFXEXT,而Release模式下没有_AFXEXT,所以导致了Release模式下,编译出现了这个__declspec(dllimport)。
在Release模式下的预处理器,加上_AFXEXT宏,问题解决。