2011-12-15 32 views
3

这是我的第一个问题,如果没有很好的阐述或者愚蠢的话,那么对不起。如何在C++中使用Octave库

我想使用与C++

八度音库我使用Qt的创造者在Ubuntu(Linux的小白)

#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: 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“添加库”功能添加这个库,我仍然得到相同的错误。

请帮我

回答

2

的liboctave没有安装在标准位置,当你编译你的povide 它是不知道运行 时间的参数-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. 硬编码路径使用附加选项withing excutable:-Wl,-rpath=$$PWD/../../../../usr/lib/octave-3.2.4/

    它会在这个位置搜索它。

+0

谢谢!首选的作品。但是,我必须使用与声明环境变量的shell会话运行可执行文件。当我尝试使用QtCreator执行可执行文件时,它不起作用。但那只是我对Linux的缺乏认识。 – 2011-12-15 13:18:33