我想在QT(http://www.mathworks.com/help/help/techdoc/matlab_external/f39876.html#bsfvqhp-1)下使用MATLAB的C API。在我的.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版本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/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程序,该程序使用 垫子文件接口库 没有问题。该示例文件位于以下位置: matlabroot/examples/eng_mat/matcreat.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库将与MSVC一起编译,并且由于您说您正在使用MingW编译自己的代码,所以我想这两个是不兼容的。

看一下 混合编译器上的mingw页面 了解更多信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top