如何强制Visual Studio 2010使用x64?

时间:2012-06-01 11:29:52

标签: c++ visual-studio-2010 platform

每当我在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)

2 个答案:

答案 0 :(得分:2)

如果有人遇到与我相同的问题,他可以在the MSDN 'forum'找到讨论和解决方案。

  

好的,我发现它,LibraryPath对应VC ++目录项目属性页面中的Library Directories属性。这解释了发生了什么,该值通常是继承的,因此当您创建add x64时它会自动更改。但是,由于您修改了该值,因此它现在是项目的本地值,并且只是在添加x64 ...以及所有这些x86特定目录时复制它。

     

我认为在Linker \ General \ Additional Library Directories中添加lib目录更简单,更安全

答案 1 :(得分:0)

的Lukas'以上回答是正确的。但是,可能会有其他并发症。

如果更改库目录路径不起作用,请确保您的vcxproj文件不是只读文件或尝试直接在vcxproj文件中编辑路径。

使用VS Perforce插件,更改库目录路径和构建可能实际上不会保存您的项目文件,并且您不会收到有关该文件是只读的警告,从而允许构建继续旧的,不正确的设置。