Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接器内存不足LNK1102_C++_Windows_Visual Studio_Linker - Fatal编程技术网

C++ 链接器内存不足LNK1102

C++ 链接器内存不足LNK1102,c++,windows,visual-studio,linker,C++,Windows,Visual Studio,Linker,我的同事和我曾试图构建一个包含数千个类的项目,但我们遇到了一个LNK1102错误(链接器内存不足)。我在网上看到了一些技巧,比如增加虚拟内存。我们试过了,但没用。我们还看到,有些在编译代码时启用了不同的警告级别。一个人建议启用4级警告。 这怎么可能呢?还有其他建议吗?如果项目太大,则将其分成几个部分 这也可能有助于维护。如果您在windows计算机上运行此功能,请在链接时打开任务管理器并转到“性能”页面。 如果您看到页面文件的使用量一直在增加,直到它满了为止,那么请将其大小增加到ram的至少两倍

我的同事和我曾试图构建一个包含数千个类的项目,但我们遇到了一个LNK1102错误(链接器内存不足)。我在网上看到了一些技巧,比如增加虚拟内存。我们试过了,但没用。我们还看到,有些在编译代码时启用了不同的警告级别。一个人建议启用4级警告。
这怎么可能呢?还有其他建议吗?

如果项目太大,则将其分成几个部分


这也可能有助于维护。

如果您在windows计算机上运行此功能,请在链接时打开任务管理器并转到“性能”页面。 如果您看到页面文件的使用量一直在增加,直到它满了为止,那么请将其大小增加到ram的至少两倍。
如果页面文件在抛出错误之前未填满,请确保计算机上有足够的磁盘空间。

是否运行64位版本的链接器?缺点:您将得到一个amd64可执行文件。
(与32->64交叉编译工具集不同,没有64->32位工具集)

在链接时通过任务管理器明确监控实际内存使用情况。关闭其他程序以增加可用的物理内存,并尽可能将页面文件的大小设置为4092 mb


此外,它可能有助于创建一个新的应用程序。这将允许其他人尝试在其他机器上重现您的链接问题。

我怀疑链接器也需要很多时间才能完成。既然你说有上千个C++类,我的第一个想法就是检查是否有很多内联类方法。 试试这个:

选择一组使用最多的类,通过将所有内联方法从头文件移动到实现文件,使它们成为非内联方法。我在连接时间上经历了巨大的变化。我们的一个项目从15分钟的纯链接变成了30秒。这也会影响链接过程的内存

祝你好运! //Magnus项目(右键单击)→ 性质→ 配置属性→ 连接器→ 优化→ 工具书类→ 更改为保留未引用的数据


在我的机器上工作

我在编译纯C时遇到了同样的问题:

"*LINK : fatal error LNK1102: out of memory*"
我的解决方案是:删除周围的所有*.pdb(调试)文件。
在那之后,一切都联系在一起,没有任何问题。因此,在我的案例中,pdb文件可能是一个缺陷——缺陷以一种有趣的方式导致了这个链接器错误。

在VS2008中增量构建一个大项目时,我也遇到了同样的错误。我刚刚清理项目,删除所有*.ILK,*.dll,*.exe和*.PDB文件,并再次构建。

如果使用Visual C++ 6,避免从“子”驱动器或“网络映射”驱动器加载工作空间。将项目复制到“C:\temp\MyProject\”文件夹,并从此位置加载工作区,使“LNK1102”错误这次消失


希望有帮助

我有一个
致命错误LNK1102:内存不足
错误,并通过解决。您可以设置一个环境变量:

set PreferredToolArchitecture=x64
然后运行Visual Studio。

多次提到的解决方案是使用64位主机编译器工具

对于CMake生成的项目,可以通过在
CMakeLists.txt
中将变量设置为值
host=x64
,来实现这一点:

set(CMAKE_GENERATOR_TOOLSET "host=x64")
或在cmake命令行上添加

-T host=x64

注意:此设置仅适用于Visual Studio生成器。对于任何其他的生成器,它都会造成致命的错误。< /P>你正在编译哪种语言?哪个工具版本?我们正在使用Windows嵌入式CE 6平台构建器来构建C++代码。最好不要标记这个“Windows”——通常被解释为x86/x64产品。你说的是/3GB标志和朋友()?我们更愿意把它作为最后一个选项。清除pdb文件解决了LNK1102错误,似乎稍微加快了构建速度!