运行以下代码时出现段错误。调用带有1个参数的Octave内置函数工作正常,例如FSIZE。但是对于2个参数中的任何一个,我都会遇到段错误。我试过Frdivide和Fplus。
#include <octave/oct.h>
#include <octave/builtin-defun-decls.h>
int main() {
octave_value_list args;
octave_value_list res;
Matrix l(3,1,1.0);
Matrix r(3,1,1.0);
args(0) = l;
args(1) = r;
res = Fplus(args); // BOOM !!!
}
答案 0 :(得分:0)
似乎必须初始化解释器,甚至认为Octave文档表明这对于内置Octave函数不是必需的。以下代码有效:
#include <octave/oct.h>
#include <octave/octave.h>
#include <octave/builtin-defun-decls.h>
#include <octave/toplev.h>
int main() {
string_vector argv(2);
argv(0) = "embedded";
argv(1) = "-q";
octave_main(2, argv.c_str_vec(), 1);
octave_value_list args;
octave_value_list res;
Matrix l(3,1,1.0);
Matrix r(3,1,1.0);
args(0) = l;
args(1) = r;
res = Fplus(args);
std::cout << res(0).matrix_value();
clean_up_and_exit(0);
}