Vinculación Matlab biblioteca compartida en Qt (Windows)
-
12-10-2019 - |
Pregunta
Quiero utilizar la API de Matlab C dentro del intervalo QT (http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) en Windows para abrir un archivo .mat. En mi archivo .pro He incluido
INCLUDEPATH += "C:\Program Files\MATLAB\R2010b\extern\include"
el cual fina (las compilaciones de código) que funciona. Pero cuando se trata de vincular el archivo libmat.lib (He leído los archivos .dll no se pueden vincular directamente) usando
LIBS += -L"C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft" -llibmat
la aplicación se bloquea en ejecución. El error dado dice [file].exe exited with code -1073741515
No soy ni un cuarto de galón, ni un experto en Windows, pero para este proyecto que estoy obligado a utilizar tanto (supongo que sería más fácil de solucionar este problema en GNU / Linux), de modo sería apreciado ninguna ayuda. Uso de Windows XP, QT versión 4.7.0 con Qt Creator 2.0.1, y Matlab R2010b.
La última salida del compilador si acaso es útil:
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
Solución
Acabo de prueba la construcción de un sencillo programa C que utiliza el Biblioteca de interfaz MAT-archivo sin problemas. El archivo de ejemplo se encuentra en: matlabroot/examples/eng_mat/matcreat.c
. Estoy compilando usando MinGW en una máquina de 32 bits de Windows XP. Aquí está el Makefile utilicé:
# 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
Otros consejos
Sospecho que la biblioteca de Matlab habrá sido compilado con MSVC y puesto que usted dice que está compilando su propio código con MingW Me imagino que los dos son incompatibles.
Para consultar la página MingW en mezclar los compiladores para obtener más información.