Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

时间:2023-01-09 11:18:50

在64位机器上编译VS工程出现这个问题,按如下步骤逐个排除:(这里以VS2008为例子)

排查步骤一:系统是否已经安装VS下X64编译能力

在控制面板中找到VS2008,选择卸载或更改,如下:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

勾选X64编译器和工具,然后点击更新:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

安装完后进入下面的步骤。

排查步骤二:VS本身的包含路径是否正确设置为64位

依次进入“工具”->“选项”->“项目和解决方案”->“VC++目录”,在平台这里选择X64,然后更改依赖的头文件,库文件和可执行文件目录:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

注意不要混淆win32和x64的设置,比如下面的路径是X64的:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

排查步骤三:VS工程的配置是否正确
在工程上右键选择属性,进入这里:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

如果平台不是X64,则在配置管理器中新建一个,如下:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”

上述步骤OK后回到属性页,选择“链接器”->“高级”,将目标计算机设置为MachineX64:
Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”
排查完所有三个步骤后,重新生成VS工程,就可以正常编译了。