C++ 倍频程C++;API(feval)-如何将多个参数传递给feval?

C++ 倍频程C++;API(feval)-如何将多个参数传递给feval?,c++,visual-studio-2010,octave,C++,Visual Studio 2010,Octave,环境:Windows 7 Professional+octave 3.6.2+Visual C++ 我试图把八度码嵌入到一个独立的C++程序中,根据教程: 我设法毫无问题地运行了第一个程序,但第二个程序给出了错误消息 第二个程序的简化版本: int main (void) { string_vector argv (2); argv(0) = "embedded"; argv(1) = "-q"; octave_main (2, argv.c_str_vec()

环境:Windows 7 Professional+octave 3.6.2+Visual C++

<>我试图把八度码嵌入到一个独立的C++程序中,根据教程:

我设法毫无问题地运行了第一个程序,但第二个程序给出了错误消息

第二个程序的简化版本

int main (void)
{
    string_vector argv (2);
    argv(0) = "embedded";
    argv(1) = "-q";
    octave_main (2, argv.c_str_vec(), 1);

    Matrix a_matrix = Matrix (1, 2);
    std::cout << "GCD of [12, 16] is ";


    a_matrix(0)=12;
    a_matrix(1)=16;

    octave_value_list in = octave_value (a_matrix);
    octave_value_list out = feval ("gcd", in, 1);

    std::cout<<out(0).matrix_value()<<std::endl;
    return 0;

}
int main(无效)
{
字符串向量argv(2);
argv(0)=“嵌入式”;
argv(1)=“-q”;
主八度音程(2,argv.c_str_vec(),1);
矩阵a_矩阵=矩阵(1,2);

std::cout好吧,我刚才做了如下替换:

//octave_value_list in = octave_value (a_matrix);
octave_value_list in;
for (octave_idx_type i = 0; i < n; i++)
   in(i) = a_matrix (i);
//倍频程值列表in=倍频程值(一个矩阵);
倍频程值列表中;
对于(倍频程i=0;i

它是有效的…但我得到了一个jre错误。

结果表明,直接将倍频程值列表作为输入,而不是将矩阵转换为倍频程值列表,使用倍频程值,效果很好。(也许倍频程值是罪魁祸首?)

因此,倍频程3.6.2下的工作代码如下:

int main (void)
{
    string_vector argv (2);
    argv(0) = "embedded";
    argv(1) = "-q";
    octave_main (2, argv.c_str_vec(), 1);

    std::cout << "GCD of [12, 16] is ";

    // Use octave_value_list directly as input
    octave_value_list in(2);    
    in(0)=12;
    in(1)=16;

    octave_value_list out = feval ("gcd", in, 1);

    std::cout<<out(0).int_value()<<std::endl;
    return 0;

}
int main(无效)
{
字符串向量argv(2);
argv(0)=“嵌入式”;
argv(1)=“-q”;
主八度音程(2,argv.c_str_vec(),1);

在这种情况下,“n”是什么?获取一个JRE错误如何算作“工作”?为了完整起见,您不应该调用octave_exit吗?