2

私のqtプロジェクトで使用するfile.txtを書き込む関数がmatlabにあります。

そう、

unix() を使用して実行する qt コンパイル済み実行可能ファイルを取得すると、Matlab ファイルがありますが、エラーが発生します。

コード:

unix('/home/matt/Desktop/PlaneVolumeFinal/PlaneVolumeGui');

エラー:

/home/matt/Desktop/PlaneVolumeFinal/PlaneVolumeGui: symbol lookup error: /home/matt/Desktop
/PlaneVolumeFinal/PlaneVolumeGui: undefined symbol: _ZN9QListData7detach3Ev
4

4 に答える 4

4

@grungetta も指摘しているように、この問題は、MATLAB ローカル ライブラリ パスが Qt ライブラリを認識していないことに関連している可能性がありlibQtMultimedia.soますLD_LIBRARY_PATH

これを回避する 1 つの方法はLD_LIBRARY_PATH、MATLAB 実行中のセッション内で from の値を明示的に設定することです (続行する必要がある場合は、値を再保存します)。MATLAB スクリプトのコマンド セットの例は次のとおりです。

%*** save local (MATLAB's) LIBRARY PATH
libPathLocal = getenv('LD_LIBRARY_PATH');  

%*** set your global LIBRARY PATH 
PATH_LD_LIBRARY = '/usr/lib/' % or any string containing library files required 
setenv('LD_LIBRARY_PATH', PATH_LD_LIBRARY); 

%*** call binary through 'unix' or 'system'
system('/home/matt/Desktop/PlaneVolumeFinal/PlaneVolumeGui'); 

%*** restore session's MATLAB's library path
setenv('LD_LIBRARY_PATH', libPathLocal); 
于 2012-09-12T17:39:37.410 に答える
0

どのような方法で Qt プロジェクトを呼び出したいか完全にはわかりません。ただし、MATLABシステムコマンドが役立つ場合があります。このコマンドは、オペレーティング システム コマンドを実行し、結果を返すために使用されます。

したがって、MATLAB から実行可能ファイルを開始するだけの場合は、おそらくこれが必要です。

また、dosunixは 2 つの関連する MATLAB コマンドであり、状況によってはより適切な場合があります。

于 2012-09-10T18:28:28.070 に答える
0

私は Matlab を使った経験はありませんが、ここに私の 2 セントがあります。

  1. /home/matt/Desktop/PlaneVolumeFinal/PlaneVolumeGui がコマンド プロンプトから正常に動作する場合、MatLab が libQtCore.so を見つけることができないようです (ライブラリの名前については正確にはわかりませんが、QtCore ライブラリを参照しています)。 )。その場合、Qt の Core ライブラリを MatLab の検索場所の 1 つにコピーして試してください。コマンド プロンプトから同じエラーが表示される場合は、Qt のライブラリが検索パスにないことを意味します。LD_LIBRARY_PATH に PATH_TO_QTLIBS を追加できるかもしれません。

  2. もう 1 つの理由として、システムに複数のバージョンの Qt があり、アプリケーションを実行しようとしたときにローダーが別のバージョンを参照しようとしている可能性があります。

お役に立てれば。

于 2012-09-13T09:39:34.913 に答える
0

ライブラリのバージョンに問題がある可能性があります。バイナリは、システム上の QT とは異なる QT バージョンでコンパイルされましたか? システムにはいくつのライブラリ バージョンがありますか? 「ldd /home/matt/Desktop/PlaneVolumeFinal/PlaneVolumeGui」を実行すると、どのような出力が得られますか?

于 2012-09-13T13:43:12.250 に答える