bigobj 选项 C++ 编译器与 Matlab 的接口

问题描述 投票:0回答:1

我正在使用 ACADO,我将其描述为一个框架,但不确定它是不是。简而言之,它是一种运行优化控制的方法,在其中搜索由影响结果的某些控制驱动的微分方程的解。现在,当我运行程序时,编译器出现以下错误

fatal error C1128: number of sections exceeded object file
format limit: compile with /bigobj

现在我可以尝试使用 Visual Studio 将这个 bigobj 添加到附加选项中,但是 cpp 文件是通过运行 matlab 代码创建的,界面创建这个 cpp 文件,并且由于默认 obj 大小 65,279(几乎 2^16)可寻址部分 i得到上面显示的错误。如何在编译器中设置 bigobj 的默认值

系统windows10家庭x64 MATLAB 2021b 微软视觉工作室 2019 ACADO 的 github 链接https://acado.github.io/index.html

c++ matlab compiler-errors compiler-optimization
1个回答
0
投票

如果有人仍然遇到这个问题,这对我有用。我修改了全局变量

mexcall
中的
ACADO_
字段,如下:

global ACADO_;
ACADO_.mexcall = insertAfter(ACADO_.mexcall, "mex ", "COMPFLAGS='$COMPFLAGS -bigobj' ");
mpc.exportCode('export');

我正在使用 Microsoft Visual Studio 编译器。对于 MinGW、macOS 和 Linux 编译器,它需要是(参见 https://mathworks.com/help/matlab/ref/mex.html):

ACADO_.mexcall = insertAfter(ACADO_.mexcall, "mex ", "CXXFLAGS='$CXXFLAGS -bigobj' ");

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.