2011-12-15 2 views
3

これは私の最初の質問ですので、うまくいきません。C++でOctaveライブラリを使用する方法

私はUbuntuの上でのQtのクリエイター(Linuxのnoobの)まず

#include "octave/oct.h" 

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

    Matrix matrix(3,4); 

    return a.exec(); 
} 

を使用していますC++

でオクターブライブラリを使用しようとしている私はいくつかの未定義の参照のエラーを得ました。プログラムにライブラリがないと分かりましたので、ライブラリ "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の "ライブラリの追加"機能を使ってこのライブラリを追加しましたが、同じエラーが表示されます。

あなたはそれが知られていない実行 時にしかし、あなたのpovide パラメータ-L$$PWD/../../../../usr/lib/octave-3.2.4/それをコンパイルするとき

答えて

2

liboctaveは、標準の場所にインストールされていない私を助けてください。

だから、あなたは2つのオプションがあります。

  1. は、環境変数LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4を提供し、プログラムを実行します。打ち、追加のオプションを使用してexcutableをwithingパス

    export LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4 
    
  2. を:-Wl,-rpath=$$PWD/../../../../usr/lib/octave-3.2.4/

    そして、それはこの場所でそれを探します。

+0

ありがとうございます!最初の選択が有効です。しかし、私は環境変数を宣言するのと同じシェルセッションで実行可能ファイルを実行する必要があります。 QtCreatorで実行可能ファイルを実行しようとすると動作しません。しかし、それはLinuxの知識が不足しているだけです。 –

関連する問題