我收到了几个警告,说我有不一致的 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 进行了尝试,但似乎都不起作用。
正如我所说,我可以将它添加到预处理器定义中,但我很困惑为什么它的行为不应该如此。
最佳答案
是的,当您使用 Win32 项目模板启动 DLL 项目时确实会发生这种情况。该向导将自动为您添加 PROJECTNAME_EXPORTS 预处理器定义。
问题在于它不能在符号中使用空格,因此不能使用“MY PROJECT_EXPORTS”。它将 删除 空间并使其成为 MYPROJECT_EXPORTS。这与您使用的 MY_PROJECT_EXPORTS 不匹配。当然,没有什么是快速编辑 + 替换解决不了的。
关于dll - 不一致的dll链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15374532/