【问题标题】:How do I force Visual Studio 2010 to use x64?如何强制 Visual Studio 2010 使用 x64?
【发布时间】: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)

【问题讨论】:

  • 好像是这个问题:stackoverflow.com/a/2850513/1262104
  • 我已经按照他们的建议做了,但是链接器在某处找到了为 x86 而不是 x64 编译的 .obj 文件。
  • 确定您使用的是 x64 .libs 吗?在我看来,您正在尝试将 x86 库与 x64 可执行文件一起使用。
  • 是的,在我看来,VS 使用的是 x86,但这就是问题所在。我从不指定应该使用哪个版本的运行时/标准库,VS 为我这样做,如果我在第一次编译之前切换它工作正常,但如果我之后切换它不会。我怎样才能告诉 VS 使用 x64 运行时/标准库?

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


【解决方案1】:

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

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

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

【讨论】:

  • 这很好 Lukas,您能否使用实际答案而不是链接来编辑答案,以防 url 更改,或者网站出现故障或删除线程。 (这实际上发生了很多)。
【解决方案2】:

卢卡斯上面的回答是正确的。但是,可能会有其他并发症。

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

使用 VS Perforce 加载项,更改库目录路径和构建可能不会真正保存您的项目文件,并且您不会收到文件是只读的警告,允许构建继续旧的,设置错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2011-02-14
    • 1970-01-01
    • 2012-02-25
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多