Question

Je veux utiliser l'API C de Matlab au sein de l'intervalle QT (http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) sous Windows pour ouvrir un fichier .mat. Dans mon dossier .pro J'ai inclus INCLUDEPATH += "C:\Program Files\MATLAB\R2010b\extern\include" qui fonctionne très bien (les compiles de code). Mais en essayant de lier le fichier libmat.lib (j'ai lu les fichiers .dll ne peuvent pas être liés directement) à l'aide LIBS += -L"C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft" -llibmat l'application se bloque lors de l'exécution. L'erreur donnée dit [file].exe exited with code -1073741515

Je ne suis ni un QT, ni un expert de Windows, mais pour ce projet, je suis obligé d'utiliser les deux (je suppose que ce serait plus facile de résoudre ce problème dans GNU / Linux) de sorte que toute aide serait appréciée. Sous Windows XP, la version QT 4.7.0 avec Qt Creator 2.0.1 et Matlab R2010b.

La dernière sortie du compilateur juste au cas où il est utile:
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

Était-ce utile?

La solution

Je viens de tester la construction d'un programme simple C qui utilise le Interface MAT-File Library sans problème. Le fichier exemple est situé dans: matlabroot/examples/eng_mat/matcreat.c . Je compile en utilisant MinGW sur une machine 32 bits de Windows XP. Voici le Makefile je:

# 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

Autres conseils

Je soupçonne que la bibliothèque Matlab aura été compilé avec MSVC et puisque vous dites que vous compilez votre propre code avec MingW j'imagine les deux sont incompatibles.

Jetez un oeil à la page MingW sur le mélange des compilateurs pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top