将Matlab共享库链接到Qt(Windows)

将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

+0

你使用哪个编译器,你知道哪个编译器被用来构建Matlab库吗?另外,当您说“读取了无法直接链接的.dll文件”时,您是否可以扩展自己的意思? – Troubadour 2011-01-19 11:53:55

+0

嗨。我不确定QT在Windows中使用哪种编译器(因为构建系统是mingw32-make,我猜是win32-g ++),我不知道用于构建Matlab库的编译器。当我说DLL文件不能直接链接时,我的意思是应该在配置文件(.pro)中使用.lib文件。 – ierax 2011-01-19 12:08:54

我刚刚测试建立一个简单的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了解更多信息。