Привязка общей библиотеки Matlab к Qt (Windows)
-
12-10-2019 - |
Вопрос
Я хочу использовать C API Matlab в QT (http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) под Windows для открытия файла .mat.В моем файле .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 версии 4.7.0 с Qt Creator 2.0.1 и 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, которая использует Библиотека интерфейса Mat-File без проблем. Пример файла находится в: matlabroot/examples/eng_mat/matcreat.c
. Анкет Я компилируюсь с использованием Mingw На 32-битной машине Windows XP. Вот Makefile, который я использовал:
# 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, я бы предположил, что они несовместимы.
Взгляните на страница MinGW о смешивании компиляторов для получения дополнительной информации.