IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Discussion :

Configuration du moteur MATLAB pour Qt


Sujet :

Outils

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut Configuration du moteur MATLAB pour Qt
    Bonjour à tous,

    je cherche à pouvoir utiliser des scripts matlab dans un de mes programme Qt mais malheureusement je n'arrive pas à régler le .pro pour ajouter au projet et les headers et les librairies nécessaires.
    je dois inclure les headers suivant
    engine.h
    matrix.h
    et les librairies suivantes :
    libeng.lib
    libmx.lib

    j'ai donc un fichier .pro qui ressemeble à :
    Code Qt-pro : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    QT += core gui
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = testMatlabEngine
    TEMPLATE = app
     
    DEFINES += QT_DEPRECATED_WARNINGS
     
    SOURCES += main.cpp \
               mainwindow.cpp
     
    HEADERS  += mainwindow.h \
                engine.h \
                matrix.h
     
    DISTFILES += \
        codeMatlab.m
     
    win32:LIBS += -L"C:\MATLAB\R2017b\extern\lib\win64\mingw64" -libeng.lib \
                  -L"C:\MATLAB\R2017a\extern\lib\win64\mingw64" -libmx.lib
     
    INCLUDEPATH += "C:/MATLAB/R2017b/extern/include" \
    #               "C:/MATLAB/R2017b/extern/lib/win64/microsoft"
     
    DEPENDPATH += "C:\MATLAB\R2017b\extern\include" \
                  "C:\MATLAB\R2017b\extern\lib\win64\mingw64"

    mais même si l'autocompletion de Qt creator reconnait les fonctions matlab (tel que engEvalString()...)
    à la compilation j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    warning: Failure to find: engine.h
    warning: Failure to find: matrix.h
    error: cannot find -libeng.lib
    error: cannot find -libmx.lib
    j'ai essayé plein de variantes tel que remplacer les "/" par des "\", j'ai tout mis en minuscule j'ai enlevé les "" des adresses.... jusqu'à présent sans succès.
    j'ai aussi essayé de passer par la fonctionalité d'ajout de librairies de Qt creator et pareil, il ne trouve pas les fichiers....
    est-ce que quelqu'un à déjà rencontré un problème similaire
    merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut
    Bon la situation a un peu évoluée,

    a la compilation maintenant j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     error: undefined reference to `engOpen' // engOpen  étant une fonction du matlab engine
    que j'interprete de la manière suivante :
    "le compilateur voit le header mais pas la librairie à laquelle il fait référence"
    mais je peux me tromper.
    est-ce que cela pourrait être une du à une incompatibilité entre les librairies et l’environnement de compilation ou le compilateur?

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 932
    Points : 181 506
    Points
    181 506
    Par défaut


    Ton interprétation du message d'erreur est bonne. Dans ton fichier .pro, pourquoi mets-tu des tirets devant les fichiers .lib ? Soit tu utilises Visual C++ et tu mets directement le nom du fichier .lib, soit tu utilises MinGW et il faut enlever le "ib" (MinGW infère automatiquement un lib comme préfixe pour toute bibliothèque signalée par -l) ainsi que l'extension (qui est de toute façon .a pour MinGW).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut
    Merci Dourouc05,

    a bon pourtant j'ai un programme qui fonctionne avec un .lib externe?
    Sinon je commence à penser que c'est vers matlab que se situe le problème.
    Si jamais j'y arrive je ferai un post qui explique comment faire.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut
    J'ai trouvé que les lib matlab ont été compilées avec minGW_W64 et j'utilise minGW 5.3 32 bit. Est-ce qu'une incompatibilité 32/64 bit pourrait entraîner le type d'erreur que j'obtiens?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 932
    Points : 181 506
    Points
    181 506
    Par défaut
    Très clairement, oui !
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut
    ok merci!

    cependant, je viens de configurer un autre kit de compilation avec MSVC 2015 64 bit et j'obtiens le même type d'erreur. Il faut absolument que mon compilateur soit minGW_W64?

  8. #8
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 932
    Points : 181 506
    Points
    181 506
    Par défaut
    Oui, exactement. Probablement même qu'il faut la même version majeur (5, par exemple).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 171
    Points : 75
    Points
    75
    Par défaut
    CA MARCHE!!!!
    J'utilise le kit de compilation suivant

    Desktop Qt 5.3.2
    MSVC2015 64bit

    et mon .pro ressemble à ça :
    Code Qt-pro : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    QT += core gui
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = testMatlabEngine
    TEMPLATE = app
     
    DEFINES += QT_DEPRECATED_WARNINGS
     
    CONFIG += create_prl
    CONFIG += link_prl
     
    SOURCES += main.cpp \
               mainwindow.cpp
     
    HEADERS  += mainwindow.h \
                engine.h
                matrix.h
     
    DISTFILES += \
        codeMatlab.m
     
    LIBS += -L"C:/MATLAB/R2017b/extern/lib/win64/microsoft/" -llibeng \
            -L"C:/MATLAB/R2017b/extern/lib/win64/microsoft/" -llibmx
     
    INCLUDEPATH += C:/MATLAB/R2017b/extern/include
    j'ai aussi décoché la case "shadow build" dans le build setting. je ne sais pas trop si c'est important.

    Merci beaucoup pour votre aide!!

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 932
    Points : 181 506
    Points
    181 506
    Par défaut
    pour le partage !
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo