dll连锁不一致

时间:2013-03-12 23:55:21

标签: dll linker warnings

我得到了几个警告,说我的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,但似乎都不起作用。

正如我所说,我可以将它添加到预处理器定义中,但是它让我觉得它不能正常运行。

1 个答案:

答案 0 :(得分:3)

  

我认为这是环境为dll项目创建的预定义宏

是的,当您使用Win32项目模板启动DLL项目时,确实会发生这种情况。该向导将自动为您添加PROJECTNAME_EXPORTS预处理器定义。

皱纹是它不能在符号中使用空格,因此它不能使用“MY PROJECT_EXPORTS”。它将放弃空间并使其成为MYPROJECT_EXPORTS。这与你使用的那个不匹配,MY_PROJECT_EXPORTS。当然没有什么快速编辑+替换无法修复。