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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top