首先,我确实已经检查并发现了与我的问题类似的问题:
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输出。
我想知道a)我该如何解决这个问题,以及b)为什么这只会影响发布版本?查看调试版本的库进度日志,我可以看到它正在正确地获取x64路径和库。
答案 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
文件中复制的。
最后,切换到解决方案资源管理器,然后检查项目属性 - 您的项目可能已定义了此配置中缺少的其他本地目录(或不应存在)。只需比较Debug
和Release
配置中的内容。
希望这有帮助。
还有一件事:
您可能还想检查Visual Studio使用的全局宏(或者更准确地说,它们扩展到了什么)。 I ran into very serious problem once,之后(没有任何理由)标准目录宏之一被覆盖为错误的值。