我得到几个警告,说我有不一致的dll链接,尽管我将我的dll标题分类如下:
#ifdef MY_ENGINE_EXPORTS #define ENGINE __declspec(dllexport) #else #define ENGINE __declspec(dllimport) #endif
当我将MY_ENGINE_EXPORTS添加到预处理器定义时,它可以摆脱错误,但我认为这应该在构建/导出时自动完成.我措辞错了吗?我包括一个下划线,因为该项目是2个单词,例如“我的引擎”.我已经尝试过它作为MY_ENGINE_EXPORTS和MYENGINE_EXPORTS,但似乎都不起作用.
正如我所说的,我可以将它添加到预处理器定义中,但它让我觉得它不应该表现得如此.
解决方法
I figured it was a predefined macro that the environment created for dll projects
是的,当您使用Win32项目模板启动DLL项目时,确实会发生这种情况.该向导将自动为您添加PROJECTNAME_EXPORTS预处理器定义.
皱纹是它不能在符号中使用空格,因此它不能使用“MY PROJECT_EXPORTS”.它将放下空间并使其成为MYPROJECT_EXPORTS.这与你使用的那个不匹配,MY_PROJECT_EXPORTS.什么都没有快速编辑替换无法修复当然.