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

将Matlab共享库链接到Qt(Windows),qt,matlab,windows-xp,.lib,Qt,Matlab,Windows Xp,.lib,我想在QT中使用Matlab的C API(http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) 在Windows下打开.mat文件。在我的.pro文件中,我包含了 INCLUDEPATH+=“C:\ProgramFiles\MATLAB\R2010b\extern\include” 工作正常(代码编译)。但是当尝试使用链接libmat.lib文件时(我已经读到无法直接链接.dll文件) LIBS+

我想在QT中使用Matlab的C API(http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) 在Windows下打开.mat文件。在我的.pro文件中,我包含了
INCLUDEPATH+=“C:\ProgramFiles\MATLAB\R2010b\extern\include”
工作正常(代码编译)。但是当尝试使用链接libmat.lib文件时(我已经读到无法直接链接.dll文件)
LIBS+=-L“C:\ProgramFiles\MATLAB\R2010b\extern\lib\win32\microsoft”-llibmat
应用程序在执行时崩溃。给出的错误为
[file].exe已退出,代码为-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/matparser.o debug/matutils.o debug/moc\u mainggui.o-L'c:/Qt/2010.05/Qt/lib'-lmingw32-lqtmaind“-:\LC:\Program Files\MATLAB\r210b\extern\lib\win32\microsoft”-llibmat-lQtGuid4-lQtCored4

我怀疑Matlab库是用MSVC编译的,既然你说你是用MingW编译自己的代码,我想这两者是不兼容的


查看以获取更多信息。

我刚刚测试了如何构建一个简单的C程序,该程序可以毫无问题地使用。示例文件位于:。我正在Windows XP 32位机器上编译。以下是我使用的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库吗?另外,当你说“已经阅读了.dll文件,无法直接链接”时,你能进一步说明你的意思吗?嗨。我不确定QT在Windows中使用哪种编译器(我猜是win32-g++,因为构建系统是mingw32 make),我也不知道用于构建Matlab库的编译器。当我说DLL文件不能直接链接时,我的意思是在配置文件(.pro)中应该使用.lib文件。好的,谢谢。我明白你现在说的直接链接是什么意思。我已经添加了一个答案,提示可能存在的问题。嗨。谢谢你。我不能尝试你的代码,因为我完全放弃了Matlab解决方案,转而创建和解析我自己的二进制格式。如果有人可以试试,请给阿姆罗投赞成票。