我想在Windows下的QT(http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1)中使用Matlab的C API来打开.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 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
答案 0 :(得分:2)
我刚刚测试了构建一个使用MAT-File Interface Library但没有问题的简单C程序。示例文件位于:matlabroot/examples/eng_mat/matcreat.c
。我正在使用Windows XP 32位计算机上的MinGW进行编译。这是我使用的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
答案 1 :(得分:0)
我怀疑Matlab库是用MSVC编译的,因为你说你用MingW编译自己的代码,我想这两者是不兼容的。
有关详细信息,请查看the MingW page on mixing compilers。