4

我收到几个警告说我有不一致的 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 进行了尝试,但似乎都不起作用。

正如我所说,我可以将它添加到预处理器定义中,但这让我很困惑,为什么它的行为不应该如此。

4

1 回答 1

3

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

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

皱纹是它不能在符号中使用空格,因此不能使用“MY PROJECT_EXPORTS”。它将删除空间并使其成为 MYPROJECT_EXPORTS。哪个与您使用的 MY_PROJECT_EXPORTS 不匹配。当然,没有什么是快速编辑 + 替换无法解决的。

于 2013-03-13T00:26:04.437 回答