Вопрос

Я хочу использовать 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 о смешивании компиляторов для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top