Domanda

voglio usare API C di Matlab all'interno di QT (http://www.mathworks.com/help/techdoc/matlab_external/f39876.html#bsfvqhp-1) sotto Windows per aprire un file .mat. Nel mio file .pro Ho incluso INCLUDEPATH += "C:\Program Files\MATLAB\R2010b\extern\include" che funziona bene (il codice viene compilato). Ma quando si cerca di collegare il file libmat.lib (Ho letto i file dll non possono essere collegati direttamente) utilizzando LIBS += -L"C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft" -llibmat l'applicazione si blocca in esecuzione. L'errore di data, dice [file].exe exited with code -1073741515

Non sono né un QT, né un esperto di Windows, ma per questo progetto sono costretto a usare entrambi (credo che sarebbe stato più facile per risolvere questo problema in GNU / Linux) in modo che qualsiasi aiuto sarebbe apprezzato. Utilizzo di Windows XP, QT versione 4.7.0 con Qt Creator 2.0.1, e Matlab R2010b.

L'ultima uscita del compilatore nel caso in cui è 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

È stato utile?

Soluzione

Ho appena provato la costruzione di un semplice programma C che utilizza il MAT-File Biblioteca interfaccia senza problemi. Il file di esempio si trova in: matlabroot/examples/eng_mat/matcreat.c . Sto usando la compilazione MinGW su una macchina Windows XP a 32 bit. Ecco il Makefile che ho usato:

# 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

Altri suggerimenti

Ho il sospetto che la libreria Matlab sarà stato compilato con MSVC e dal momento che dici si compila il proprio codice con MingW mi immagino i due sono incompatibili.

Date un'occhiata al pagina MingW a mescolare compilatori per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top