我有一个大约 55MB 的自动生成的 c 文件。当我尝试编译此文件时,我收到错误 C1002 编译器在来自 Microsoft Visual C++ 2019 (C) 编译器的第 2 轮中的堆空间不足。编译的时候看任务管理器,可以看内存是怎么用光的。有没有可能编译这个文件?我在这里找到了一些将文件拆分为较小文件的建议,但这实际上是不可能的,因为该文件就像我在开头所说的那样,是从其他程序自动生成的。
该文件由通常的 MATLAB-MEX 入口函数组成(因为它是自动生成的以生成为 mex)。
static int mainfun_0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) {
casadi_real a0, a1, a10, a100, a1000, a10000, a10001, a10002, a10003, a10004, a10005, a10006, a10007, a10008, a10009, a1001, a10010, a10011, a10012, a10013, a10014, a10015, a10016, a10017, a10018, a10019, a1002, a10020, a10021, a10022, a10023, a10024, ... , a9999;
a0=-2.6950354609929081e+000;
if (res[0]!=0) res[0][0]=a0;
a1=-8.5106382978723416e-001;
if (res[0]!=0) res[0][1]=a1;
a2=2.8368794326241137e-001;
if (res[0]!=0) res[0][2]=a2;
a3=0.;
if (res[0]!=0) res[0][3]=a3;
.
.
.
a935=(a935+a936);
a936=(a608*a774);
a936=(a927-a936);
.
.
.
}
生成的代码有 200 万行,正如您在用 ... 表示的变量列表中看到的那样,我无法在这篇文章中添加所有变量,因为我用完了字符。