现象
在持续集成流水线中用msbuild编译32位的程序偶先报错:Linker fatal error: LNK1102: out of memory。
一般解决方法
谷歌之后找到了微软的官方文章,里面写了产生这个问题的原因和解决方法:https://support.microsoft.com/en-us/help/2891057/linker-fatal-error-lnk1102-out-of-memory
解释:大概意思就是,link的时候申请的堆空间太大了,exe虚拟地址空间都不够了,推荐设置PreferredToolArchitecture=x64来使用64位的编译工具。
但是改了各种地方:
(1)环境变量
(2)$(VCTargetsPath)\Microsoft.Cpp.Default.props里面加上PreferredToolArchitecture属性并设置为x64
(3)在经常出错的vcxproj中加上PreferredToolArchitecture属性并设置为x64。
都不好使,郁闷
我的解决方法
最后发现,在我们的持续集成流水线中我们是这样设置msbuild环境的:
%comspec% /k ““C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat”” x86
查看这个批处理:

发现了很多不同的工具集架构,他们的区别如下:
</

在32位程序的持续集成中遇到Linker fatal error: LNK1102: out of memory问题。尝试通过设置PreferredToolArchitecture为x64来解决,但未成功。最终解决方案是在msbuild环境中指定amd64_x86参数,确保使用64位工具链编译x86目标,从而避免内存溢出。
最低0.47元/天 解锁文章
858

被折叠的 条评论
为什么被折叠?



