Matlab共有ライブラリをQT(Windows)にリンクする
-
12-10-2019 - |
質問
qt(http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1)内で.matファイルを開くためにMatlabのC APIを使用したい。私の.proファイルに含めましたINCLUDEPATH += "C:\Program Files\MATLAB\R2010b\extern\include"
正常に動作します(コードコンパイル)。ただし、libmat.libファイルをリンクしようとすると(.dllファイルを直接リンクできない)LIBS += -L"C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft" -llibmat
アプリケーションは実行時にクラッシュします。指定されたエラーは言います [file].exe exited with code -1073741515
私はQTでもWindowsの専門家でもありませんが、このプロジェクトでは両方を使用することを余儀なくされています(GNU/Linuxでこれを修正する方が簡単だと思います)。 Windows XP、QT Creator 2.0.1を搭載したQTバージョン4.7.0、およびMATLAB R2010Bを使用しています。
コンパイラからの最後の出力は、それが便利である場合に備えて、次のようになります。
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug/MainUI.exe debug/main.o debug/maingui.o debug/matparser.o debug/matutils.o debug/moc_maingui.o -L'c:/Qt/2010.05/qt/lib' -lmingw32 -lqtmaind "-LC:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft" -llibmat -lQtGuid4 -lQtCored4
解決
私はただ、を使用する簡単なCプログラムの構築をテストしました マットファイルインターフェイスライブラリ 問題なく。例ファイルは次のようになります: matlabroot/examples/eng_mat/matcreat.c
. 。使用してコンパイルしています Mingw Windows XP 32ビットマシンで。これが私が使用したメイクファイルです:
# root directory of MATLAB installation
MATLABROOT="/c/Program Files/MATLAB/R2010b"
.PHONY : all clean run
all: matcreat
matcreat:
gcc ${MATLABROOT}/extern/examples/eng_mat/matcreat.c -o matcreat \
-I${MATLABROOT}/extern/include \
-L${MATLABROOT}/extern/lib/win32/microsoft -llibmat -llibmx
clean:
rm -rf matcreat *.exe *.mat
run:
# UNIX uses LD_LIBRARY_PATH to find libs at runtime, Windows/MinGW uses PATH
@PATH=${MATLABROOT}/bin/win32:"${PATH}" ./matcreat
他のヒント
MatlabライブラリはMSVCにコンパイルされていると思われ、MingWで独自のコードをコンパイルしていると言ってから、2つは互換性がないと思います。
見て ミキシングコンパイラのMINGWページ 詳細については。