VC 编译器 (Visual Studio 2015) 无法链接大 (>2G) 静态库文件
Posted
技术标签:
【中文标题】VC 编译器 (Visual Studio 2015) 无法链接大 (>2G) 静态库文件【英文标题】:VC compiler (Visual Studio 2015) can not link big (>2G) static lib file 【发布时间】:2017-06-15 03:55:10 【问题描述】:Visual Studio 2015 无法链接大于 2G 的静态库。
错误是:
找不到 *.lib 文件。
我的问题是:它的设计目的是什么?如果有,为什么?
【问题讨论】:
您可能正在使用 32 位托管工具,您可以选择使用 x64 本机版本的工具,这应该会更成功。set PreferredToolArchitecture=x64
然后启动 devenv.exe
或在 Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
之后将 <PropertyGroup><PreferredToolArchitecture>x64</PreferredToolArchitecture></PropertyGroup>
添加到 vcxproj。见this thread。
谢谢,它对我有用。
【参考方案1】:
32 位工具只能使用 2 GB 的虚拟地址空间(虽然它们是 /LARGEADDRESSAWARE
,所以从技术上讲,在 64 位操作系统上它们可以获得 3 GB 的虚拟空间)。因此,链接器很可能只是耗尽了如此大的库上的虚拟地址空间。
解决方案是使用 x64 原生工具而不是 32 位工具。
要么设置环境变量:
set PreferredToolArchitecture=x64
或编辑您的 vcxproj 以在 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
之后将以下内容添加到您的项目文件中
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
有关 32 位和 64 位应用程序中虚拟地址空间限制的详细信息,请参阅 Sponsored Feature: RAM, VRAM, and More RAM: 64-Bit Gaming Is Here。
【讨论】:
尝试此操作并成功后的旁注:属性定义不需要在Import
之后。我还成功地将<PreferredToolArchitecture>x64</PreferredToolArchitecture>
放在全局PropertyGroup
之前<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
。以上是关于VC 编译器 (Visual Studio 2015) 无法链接大 (>2G) 静态库文件的主要内容,如果未能解决你的问题,请参考以下文章
将 VC++ 06 迁移到 Visual Studio 2012:从编译中删除 hcw
是否可以使用 Visual Studio 6.0(VC98 编译器)构建使用清单指定依赖关系的应用程序?