我正在尝试在这里获取 Octave C++ 代码以在g++ (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04) 4.6.4)
.
上面的这个修剪版本将编译为g++
:
#include <iostream>
#include <octave/oct.h>
using namespace std;
int main() {
// Matrix L=Matrix(2,2);
return 0;
}
但是如果我取消注释该行Matrix L=Matrix(2,2);
然后用它编译g++ temp.cpp
会给出错误消息:
/tmp/ccTa3Am5.o: In function `Array2<double>::~Array2()':
temp.cpp:(.text._ZN6Array2IdED2Ev[_ZN6Array2IdED5Ev]+0x1f): undefined reference to `Array<double>::~Array()'
/tmp/ccTa3Am5.o: In function `Array<double>::Array(dim_vector const&)':
temp.cpp:(.text._ZN5ArrayIdEC2ERK10dim_vector[_ZN5ArrayIdEC5ERK10dim_vector]+0x26): undefined reference to `Array<double>::get_size(dim_vector const&)'
/tmp/ccTa3Am5.o:(.rodata._ZTV5ArrayIdE[vtable for Array<double>]+0x10): undefined reference to `Array<double>::~Array()'
/tmp/ccTa3Am5.o:(.rodata._ZTV5ArrayIdE[vtable for Array<double>]+0x18): undefined reference to `Array<double>::~Array()'
collect2: ld returned 1 exit status
我不确定为什么。也许我错过了一个#include
,也许我没有安装适当的文件,也许我没有链接到适当的库,或者我以某种方式滥用 Octave。
问题:为什么编译失败?我该如何解决?
mkoctfile --link-stand-alone temp.cpp
如果我按照上面网站的说明使用它,它编译得很好,但是,g++
如果可能的话,我想使用它,因为我最终希望能够从我用 C++ 编写的另一个程序中调用 Octave 函数。