如何在C ++中使用Octave库

时间:2011-12-15 07:11:23

标签: qt-creator octave ubuntu-11.04

这是我在这里的第一个问题,如果没有很好的表述或愚蠢的话,请向前表示抱歉。

我正在尝试使用带有C ++的八度音程库

我在Ubuntu(linux noob)上使用Qt创建者

#include "octave/oct.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Matrix matrix(3,4);

    return a.exec();
}

起初我得到了一些未定义的引用错误。我发现程序缺少库,所以我找了库“liboctave.so”。我在usr / lib / octave-3.2.4中找到了它。更确切地说,有一个名为“liboctave.so”的符号链接指向“liboctave.so.3.2.4”文件。我使用QtCreators“添加库”功能将库添加到我的项目中。该程序在我的.pro文件中生成了此代码

unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -loctave

INCLUDEPATH += $$PWD/../../../../usr/lib/octave-3.2.4
DEPENDPATH += $$PWD/../../../../usr/lib/octave-3.2.4

程序构建没有错误。甚至没有抱怨未定义的引用。但是当我运行它时,我得到了

开始/ home / martin / Projects / test-build-desktop / test ...

/home/martin/Projects/test-build-desktop/test: error while loading shared libraries: liboctave.so: cannot open shared object file: No such file or directory
/home/martin/Projects/test-build-desktop/test exited with code 127

我无法弄清楚为什么找不到该文件。我只是睁着眼睛看文件。

我发现问题可能是权限,所以我将“liboctave.so.3.2.4”文件复制到项目位置,将其重命名为“liboctave.so”并为每个人添加了所有权限。然后使用Qtcreator“添加库”功能添加了这个库,我仍然得到相同的错误。

请帮帮我

1 个答案:

答案 0 :(得分:2)

当你编译它时,liboctave没有安装在标准位置 但是在运行中参数-L$$PWD/../../../../usr/lib/octave-3.2.4/ 时间不得而知。

所以你有两个选择:

  1. 提供环境变量LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4,然后运行程序:

    export LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4
    
  2. 使用附加选项使用excutable对路径进行硬编码:-Wl,-rpath=$$PWD/../../../../usr/lib/octave-3.2.4/

    它会在这个位置搜索它。