【问题标题】:Using /Zm with CL In Visual Studio 6.0在 Visual Studio 6.0 中将 /Zm 与 CL 一起使用
【发布时间】:2021-08-23 09:56:42
【问题描述】:

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

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

我尝试将/Zm500 添加到 bat 文件中,但没有产生任何变化。有一些suggestions online 可以使用/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.

【问题讨论】:

  • 这是针对当前编译器的,我无权访问 VC 6.0 文档 - "...如果编译器发出 C1076 错误消息,则随附的 C3859 消息会指定因子参数使用 /Zm 编译器选项重新编译时使用...." 你收到 C3859 消息了吗?
  • @RichardCritten 不,我没有收到 C3859 消息。这就是我尝试 /MP 的原因,因为在一个文档中提到如果 C3859 不伴随 /MP 将被使用。

标签: c++ visual-c++ command-line compiler-errors visual-studio-6


【解决方案1】:

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

我不相信 Visual Studio 6.0 支持 /MP 开关。就这么老了。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 2017-05-05
    • 2018-06-08
    • 1970-01-01
    • 2011-12-01
    • 2020-04-16
    • 2021-09-30
    • 2011-02-15
    相关资源
    最近更新 更多