首页 > 解决方案 > 在 Visual Studio 6.0 中将 /Zm 与 CL 一起使用

问题描述

我正在使用一个名为 Symbols 的软件进行工程建模。它为模型生成一个 .cpp 文件,以及一个用于命令行编译的 .bat 文件。它使用编译器生成 .dll 文件,然后调用该文件以完成模拟。

它使用 Visual C++ 6.0 编译器。我收到错误xxx.cpp(64952):致命错误 C1076:编译器限制:达到内部堆限制;使用 /Zm 指定更高的限制

我尝试添加/Zm500到 bat 文件中,但没有产生任何变化。网上有一些建议可以使用/MP。试过了。那也没用。我还尝试添加一个用户定义的环境变量 CL,其值为#/Zm500 /Zm500 =/Zm500等,但这些都不起作用。我不是编程专家,无法对代码进行太多编辑,因为它是自动生成的。

任何人都可以帮助解决这个问题吗?为什么/Zm不工作?我应该做点别的吗?我在 Win10 机器中使用 Visual Studio 6.0。.cpp 文件有 151,000 行代码。在 .bat 文件的内容下方添加

@ECHO OFF
ECHO --------------------Configuration: 8 Coil No MC 45L 1Rd - Win32 Release--------------------
SET OLDPATH=%PATH%
PATH="C:\WINDOWS";"C:\WINDOWS\system32";"C:\WINDOWS\COMMAND";"F:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin";"F:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin";"F:\Program Files (x86)\Microsoft Visual Studio\Common\Tools";"F:\Program Files (x86)\Microsoft Visual Studio\Common\Tools\WinNT";
ECHO Compiling...
CL.EXE  /Zm500 /MP /nologo /I "D:\Symbols\SYMBOLS Sonata\Bin" /I "D:\Bondgraph_Works\Header_Files" /I "F:\Program Files (x86)\Microsoft Visual Studio\VC98\Include" /I "F:\Program Files (x86)\Microsoft Visual Studio\VC98\ATL\Include" /I "F:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\Include" /MT /W3 /GX /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /Fo"8 Coil No MC 45L 1Rd.obj" /Fp"8 Coil No MC 45L 1Rd.pch" /Fd"" /FD /c "8 Coil No MC 45L 1Rd.cpp" 
ECHO Linking...
LINK.EXE /libpath:"D:\Symbols\SYMBOLS Sonata\Bin" /libpath:"D:\Symbols\Borland\BCC55\Lib" /libpath:"F:\Program Files (x86)\Microsoft Visual Studio\VC98\Lib" /libpath:"F:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\Lib" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  /nologo /subsystem:windows /dll /incremental:no /machine:I386  /def:"8 Coil No MC 45L 1Rd.def" /out:"8 Coil No MC 45L 1Rd.dll" "8 Coil No MC 45L 1Rd.obj" "Library.Lib"
PATH=%OLDPATH%
ECHO End of Compilation.

标签: c++visual-c++command-linecompiler-errorsvisual-studio-6

解决方案


看看是否可以增加 /Zmnnnnn 数字的大小。
/Zm10000 我不记得上限了。微软在某些时候对它可以跟踪的符号有硬性限制。Visual Studio 6.0 是 CIRCA 1998 编译器。相比之下,与驾驶特斯拉相比,这就像骑马工作。

我不相信 Visual Studio 6.0 支持 /MP 开关。它那么旧。

您可以使用 tiny_cc 预处理器,这是我们在需要预处理大文件时使用的一种解决方案。Tiny_cc 是开源的,但您必须构建它,而且我不记得切换到 CL.exe 来告诉它使用该预处理器。但这就是我们使用的解决方案。

如果您精通“C”,则可以将文件一分为二,和/或尝试使用预编译的标头,这可能会减少预处理器看到的符号。

但是 /Zm500 似乎是一个小数字,我认为您可以更高。


推荐阅读