MSVC 2013在x64 build中加载x86系统库

时间:2015-04-07 02:24:04

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

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

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路径和库。

1 个答案:

答案 0 :(得分:1)

可能只影响发布版本,因为您在此版本配置中设置了不同的属性或附加了不同的属性表。

首先,打开Visual Studio,然后转到Property Manager并展开Release | x64配置。检查是否有任何其他.props位于Microsoft.Cpp.x64.user上方。如果是,请检查它们是否不覆盖include / library目录。

还要比较.props配置中Debug | 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,之后(没有任何理由)标准目录宏之一被覆盖为错误的值。