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</PreferredTool‌​Architecture>
</Prope‌​rtyGroup>

有关 32 位和 64 位应用程序中虚拟地址空间限制的详细信息,请参阅 Sponsored Feature: RAM, VRAM, and More RAM: 64-Bit Gaming Is Here。

【讨论】:

尝试此操作并成功后的旁注:属性定义不需要在Import 之后。我还成功地将&lt;PreferredToolArchitecture&gt;x64&lt;/PreferredToolArchitecture&gt; 放在全局PropertyGroup 之前&lt;Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /&gt;

以上是关于VC 编译器 (Visual Studio 2015) 无法链接大 (>2G) 静态库文件的主要内容,如果未能解决你的问题,请参考以下文章

将 VC++ 06 迁移到 Visual Studio 2012:从编译中删除 hcw

是否可以使用 Visual Studio 6.0(VC98 编译器)构建使用清单指定依赖关系的应用程序?

visual studio怎么替代IAR

VC 编译器 (Visual Studio 2015) 无法链接大 (>2G) 静态库文件

visual studio 2010编译c的设置方法

visual c++ build tools有离线安装包吗