【问题标题】:MSVC 2013 loading x86 system libraries in x64 buildMSVC 2013 在 x64 构建中加载 x86 系统库
【发布时间】:2015-04-07 02:24:04
【问题描述】:

首先,我确实已经检查并发现了这个与我的问题类似的问题:

fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

虽然 VS2013 不再具有 VC++ 目录设置,但该解决方案无法使用。现在看起来这些是通过环境变量配置的,但我不确定如何在不破坏 32 位构建的情况下解决这个问题。

======================================

我正在将一个项目从 32 位代码移植到 64 位代码,因此我在我的 Visual Studio 项目中创建了一个 x64 平台。调试版本工作正常,但发布版本给我这个错误:

1>MSVCRT.lib(ti_inst.obj):致命错误 LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突

设置 VERBOSE:Lib 选项,它似乎试图在 x86 路径而不是 x64 中查找默认系统库。这个 pastebin 包括编译器和链接器命令行(是的,这是 MACHINE:X64)以及 VERBOSE:Lib 输出。

http://pastebin.com/Bqu0udRi

我想知道 a) 我该如何解决这个问题,以及 b) 为什么这只会影响发布版本?查看调试构建的库进度日志,我可以看到它正确地选择了 x64 路径和库。

【问题讨论】:

  • 如果该错误告诉您它在抱怨哪个模块会很有用。
  • 我的猜测是 C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86\ 不是 64 位代码。 VC++ 目录具有 x86 和 x64 设置。

标签: c++ windows visual-studio-2013


【解决方案1】:

可能它只影响 Release 构建,因为您在此构建配置中设置了不同的属性或附加了不同的属性表。

首先,打开Visual Studio,然后进入属性管理器,展开Release | x64配置。检查是否有任何其他.props 位于Microsoft.Cpp.x64.user 上方。如果是,请检查它们是否不会覆盖包含/库目录。

还比较.propsDebug | x64 配置中附加的内容。也许其中一些是必需的,但未附加在 Release 中?

如果一切正常,请验证Microsoft.Cpp.x64.user 本身。再次转到 Property Manager,右键单击它,然后单击 Properties -> VC++ Directories。检查Library Directories 条目是否包含类似:

$(VCInstallDir)lib\amd64
$(VCInstallDir)atlmfc\lib\amd64
$(WindowsSDK_LibraryPath_x64)

以上条目复制自我的 x64 .props 文件。

最后,切换到解决方案资源管理器,然后检查项目属性 - 您的项目可能定义了其他本地目录,这些目录在此配置中缺失(或不应该存在)。只需比较 DebugRelease 配置中的内容。

希望这会有所帮助。

还有一件事:

您可能还想检查 Visual Studio 使用的全局宏(或者,更准确地说,它们扩展为什么)。 I ran into very serious problem once,在(无缘无故)一个标准目录宏被覆盖为错误值之后。

【讨论】:

  • 据我所知,构建配置看起来不错。我在我的问题中包含了 pastebin 中使用的选项。查看属性,Release 确实具有整个程序优化,但不会覆盖任何目录。 Microsoft.Cpp.x64.user 和 Upgrade from VC 6.0 属性页都显示“$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);”作为库路径。这些宏似乎指向正确的位置。
  • 实际上,尽管所有页面看起来都很好,但有些东西覆盖了属性中的 Release|x64 目录。现在一切正常。感谢您为我指明正确的方向。我不经常与 VS 合作,也没有意识到这一切都在物业经理中。
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2012-12-20
相关资源
最近更新 更多