调用Octave内置函数从C ++中获取2个参数

时间:2014-11-17 23:59:00

标签: c++ octave

运行以下代码时出现段错误。调用带有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 !!!

}

1 个答案:

答案 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);
}