2011-12-15 122 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