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

时间:2011-01-19 11:39:05

标签: qt matlab windows-xp .lib

我想在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

2 个答案:

答案 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