我在我的64位Windows 8系统上运行代码,内存为8 GB,为我的项目提供,基本上涉及三维矩阵,这些矩阵很大(20x20x60000)。在Linux终端中编译代码后,我运行:
ulimit -s unlimited
然后我可以按预期执行程序。
在我的Windows命令提示符下,我可以使用命令:
g++ -I"C:\gsl" -L"C:\gsl" main.cp -o main.exe -lgsl -lgslcblas -Wall -lm
但是给了我一个错误:
main.cp:141:6: error: total size of local objects too large
void TrajectoryAdd(void *p, double time)
当我减小矩阵的大小时,上面的命令工作正常,所以我假设堆栈大小不够大。所以我一直在尝试使用:
g++ -Wl,--stack,46777216
但是回归:
undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
我已按照其他帖子的建议尝试了此命令的变体,但这似乎不起作用,即
g++ -Wl,--stack,46777216 -o -I"C:\gsl" -L"C:\gsl" main.cp -o main.exe -lgsl -lgslcblas -Wall -lm
对于一些稍微小一点的矩阵我已经能够编译,但是当我运行可执行文件时出现Windows错误:Main.exe已停止工作。
我是C ++的初学者,因此我无法提交修改源代码的其他解决方案。