You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置PreferredToolArchitecture为x64时LNK4068/LNK1112构建失败问题咨询

PreferredToolArchitecture设为x64时触发LNK4068/LNK1112构建失败问题

问题现象

将环境变量PreferredToolArchitecture设置为x64时,构建流程触发LNK4068警告与LNK1112错误,最终导致构建失败,相关构建日志如下:

05-Jul-2022 09:43:39           Lib:
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\Lib.exe /OUT:"..\Lib\w2012r2\vs2015\release32mt\KerberosSupport.lib" /NOLOGO /LTCG w2012r2\vs2015\release32mt\KSDialog.res
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSKeytabOptionsDialog.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSDSNConfiguration.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSKrb5API_Windows.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSUtilities.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSKinitSupport.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSAuthenticatedCredentials.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSCredentialFactory.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSCredentials.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSGSSAPIWrapper.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSLocalCredentials.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSSecurity.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39             w2012r2\vs2015\release32mt\KSSecurityContext.obj
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39         2>LINK : warning LNK4068: /MACHINE not specified; defaulting to X64 [C:\bamboo-agent-home\xml-data\build-dir\Drivers\DriverShared\KerberosSupport\Maintenance\10.1\Source\KerberosSupport_vs2015_NV.vcxproj]
05-Jul-2022 09:43:39    
05-Jul-2022 09:43:39         2>w2012r2\vs2015\release32mt\KSKeytabOptionsDialog.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' [C:\bamboo-agent-home\xml-data\build-dir\Drivers\DriverShared\KerberosSupport\Maintenance\10.1\Source\KerberosSupport_vs2015_NV.vcxproj]

初步排查结论

问题核心诱因是对应构建配置下,项目文件的<Lib>节点未显式设置TargetMachine属性。修改PreferredToolArchitecture配置前,构建流程默认调用32位生成工具,工具自身位数决定了触发LNK4068警告时采用的默认目标平台类型。

待确认问题

  • 微软官方文档对LIB工具的行为描述为:通常无需指定/MACHINE参数,LIB会从.obj文件推断目标计算机类型,仅在部分无法确定类型的场景下抛出错误。该描述是否存在错误?实际运行中LIB并未检测obj文件的平台类型,仅根据lib.exe自身位数选择默认目标平台,且未抛出推断失败错误而是直接使用默认值,和文档描述存在出入。
  • 是否存在方案可以规避该问题,且无需修改原有依赖该默认行为的项目文件?是否可在调用msbuild的环节注入逻辑,根据项目目标平台自动设置对应的默认TargetMachine值?

内容的提问来源于stack exchange,提问作者Bwmat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:09:47