【发布时间】:2012-06-01 11:29:52
【问题描述】:
每当我在 Visual Studio 2010 中创建一个新项目并且一开始没有设置特定平台(在我的情况下为 x64)时,之后我将无法完全更改它。 所以我用一个外部库(编译为 x64)设置了所有需要的东西,然后按编译它显然失败了,因为两个平台不匹配。
sfml-graphics-s-d.lib(RenderStates.obj):致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突
注意到我使用 Build->Configuration-Manager->Active projectplattform->New...->x64 将其更改为 x64。这与我在做任何其他事情之前所做的相同并且它有效,但如果我之后再做,我会收到链接器错误:
libcpmtd.lib(uncaught.obj):致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突
*.obj 文件可以在不同项目之间更改(例如 cout.obj),据我了解,Visual Studio 选择 x86 标准库,并且在我切换平台后不会改变它的决定。
那么问题来了:我如何强制 VS 使用新指定的 x64 平台 - 也适用于标准库?
注意:创建新的配置设置会自动将目标机器的链接器设置更改为:MachineX64 (/MACHINE:X64)
注意:不确定是否相关,但我正在静态链接运行时库Multithreaded-Debug (/MTd)
【问题讨论】:
-
我已经按照他们的建议做了,但是链接器在某处找到了为 x86 而不是 x64 编译的 .obj 文件。
-
您确定您使用的是 x64 .libs 吗?在我看来,您正在尝试将 x86 库与 x64 可执行文件一起使用。
-
是的,在我看来,VS 使用的是 x86,但这就是问题所在。我从不指定应该使用哪个版本的运行时/标准库,VS 为我这样做,如果我在第一次编译之前切换它工作正常,但如果我之后切换它不会。我怎样才能告诉 VS 使用 x64 运行时/标准库?
标签: c++ visual-studio-2010 platform