【发布时间】:2019-06-27 09:55:10
【问题描述】:
一段时间以来,我在游戏编程方面遇到了一些问题。我不会说我是编程新手,但链接库对我来说是新事物。所以这是我的问题:当我开始编写 sfml 游戏时(我开始使用 .h 和 .cpp 文件,使用 sfml 2.5.1 64 位),我注意到我不能使用这些和类似于这些功能:
.setColor(Color::Black) / .setFillColor(Color::color)
我收到一条错误消息:
public: __thiscall sf::Color::Color(unsigned char,unsigned char,unsigned char,unsigned char)" (??0Color@sf@@QAE@EEEE@Z) 已在 sfml-graphics-d 中定义。 lib(sfml-graphics-d-2.dll)
然后我发现我必须链接静态库才能使其工作,我这样做了,但我收到一个新错误:
模块机器类型“x64”与目标机器类型“X86”冲突
我可能通过将“目标机器”更改为“未设置”来修复它,然后出现下一个 237 错误:
检测到“RuntimeLibrary”不匹配:值“MDd_DynamicDebug”与值“MTd_StaticDebug”不匹配
public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) 已在 libcpmtd.lib(xlock.obj) 中定义
private:静态类 std::locale::_Locimp * __cdecl std::locale::_Init(bool)" (?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z) 已在 libcpmtd.lib 中定义(locale0.obj)
未解析的外部符号 __imp_cosf
未解析的外部符号 __imp_sinf
还有更多……基本上,几乎每一行都是错误的。
我找到了将运行时库更改为 /MTd 的可能解决方案,但它似乎不起作用,因为我得到了相同的 237 错误。
可能是什么问题,我该如何解决?
提前谢谢你。
【问题讨论】:
-
模块机器类型 'x64' 与目标机器类型 'X86' 冲突 表示您正在混合 32 位和 64 位。您的应用程序必须与您链接到的所有二进制文件相同。
-
是的,我解决了这个问题(因为我现在不明白),但是我得到了其他“检测到不匹配”错误,而不是这个只有一个“模块机器类型”错误...
-
我这样做了:imgur.com/a/7PAV6E2
-
我现在确实看到了。我从来没有碰过那个设置。您构建 x86 或 x64 的目标是什么? x86 是 32 位 x64 是 64 位。
-
我使用 x64 构建,虽然我的游戏是从 x86 开始的,但当我将 mu sfml 2.4.2 更新到 sfml 2.5.1 时,我改变了它。我改变了,因为我的电脑是 64 位的,但构建不必匹配 64 位系统,是吗?顺便说一句,游戏从游戏开始时就错误地输入了“颜色”行,当时它是在 x86 中构建的。顺便说一句,刚才我注意到在这 200 个错误中,我不仅得到“不匹配检测到的错误,而且还有“未解析的外部符号 _imp_cosf”等。我会更新问题:)
标签: c++ windows visual-studio static-libraries sfml