将Matlab共享库链接到Qt(Windows)
我想在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文件不能直接链接)时,应用程序在执行时崩溃。给出的错误[file].exe exited with code -1073741515
将Matlab共享库链接到Qt(Windows)
我既不是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程序,使用MAT-File Interface Library没有问题。示例文件位于: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
我怀疑Matlab的库将被编译MSVC既然你说你正在编译使用MinGW我自己的代码可以想象这两者是不相容的。
查看the MingW page on mixing compilers了解更多信息。
你使用哪个编译器,你知道哪个编译器被用来构建Matlab库吗?另外,当您说“读取了无法直接链接的.dll文件”时,您是否可以扩展自己的意思? – Troubadour 2011-01-19 11:53:55
嗨。我不确定QT在Windows中使用哪种编译器(因为构建系统是mingw32-make,我猜是win32-g ++),我不知道用于构建Matlab库的编译器。当我说DLL文件不能直接链接时,我的意思是应该在配置文件(.pro)中使用.lib文件。 – ierax 2011-01-19 12:08:54