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

C++/CLI Discussion :

Inclusion de biblioth�que


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2016
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par d�faut Inclusion de biblioth�que
    Bonjour.

    Dans le cadre de mon projet, je doit r�utiliser des fonctions matlab dans un code C++ (cod� � l'aide de Qt) afin de faire du traitement d'image. J'ai donc utilis� le Matlab Compiler pour g�n�rer une biblioth�que (contenant uniquement les fonctions imread, rgb2gray et fft2, c'est juste pour comprendre le fonctionnement de l'utilisation de ce genre de biblioth�que avant d'aller plus loin). Jusque l� tout va bien: ma biblioth�que a �t� g�n�r�e.
    Je d�cide donc de l'inclure dans mon fichier .pro dans Qt

    Fichier.pro:
    Code : 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 += widgets
     
     
    SOURCES += \
        main.cpp \
        mafenetre.cpp
     
    HEADERS += \
        mafenetre.h
     
    DISTFILES += \
        lena.jpg
     
     
     
    unix|win32: LIBS += -L$$PWD/'../../../../../../Program Files/MATLAB/MATLAB Compiler Runtime/v83/extern/include/' -lmclcommain
     
    INCLUDEPATH += $$PWD/'../../../../../../Program Files/MATLAB/MATLAB Compiler Runtime/v83/extern/include'
    DEPENDPATH += $$PWD/'../../../../../../Program Files/MATLAB/MATLAB Compiler Runtime/v83/extern/include'
     
     
     
    unix|win32: LIBS += -L$$PWD/lib_test_lena/for_testing/ -llib_test_lena
     
    INCLUDEPATH += $$PWD/lib_test_lena/for_testing
    DEPENDPATH += $$PWD/lib_test_lena/for_testing
    Il y a donc la librairie du Matlab Component Runtime et la librairie lib_test_lena que j'ai cr��e. J'ai ensuite inclus cette librairie dans mafenetre.cpp:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    #include "C:/Users\antoi/Documents/STAGE_QUEBEC/test_lena_matlab/lena_librairie_statique_test/for_testing/lena_librairie_statique_test.h"


    C'est � partir de l� que j'ai des probl�mes:
    En incluant lena_librairie_statique_test.h, j'inclue donc le header mclmcr.h provenant du Matlab Compiler. Et l�, je re�oit une longue s�rie d'erreurs, notamment: " 'mxInt64' has not been declared ". Pourtant, cette variable mxInt64 est cens�e �tre d�finie dans ce m�me fichier mclmcr.h si j'ai bien compris:

    Fichier mclmcr.h:
    Code : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #if !defined(__MW_STDINT_H__)
    #  if defined( linux ) || defined( __linux ) || defined( __linux__ )
    #    include <stdint.h>
         typedef int64_t mxInt64;
         typedef uint64_t mxUint64;
    #  elif defined( macintosh ) || defined( __APPLE__ ) || defined( __APPLE_CC__ )
    #    if defined( __GNUC__ )
    #      include <stdint.h>
           typedef int64_t mxInt64;
           typedef uint64_t mxUint64;
    #    endif
    #  elif defined( sun ) || defined( __sun )
    #    include <inttypes.h>
         typedef int64_t mxInt64;
         typedef uint64_t mxUint64;
    #  elif defined( __hpux )
    #    include <inttypes.h>
         typedef int64_t mxInt64;
         typedef uint64_t mxUint64;
    #  elif defined(_MSC_VER)
         typedef __int64 mxInt64;
         typedef unsigned __int64 mxUint64;
    #  elif defined(__BORLANDC__)
         typedef __int64 mxInt64;
         typedef unsigned __int64 mxUint64;
    #  elif defined(__WATCOMC__)
         typedef __int64 mxInt64;
         typedef unsigned __int64 mxUint64;
    #  elif defined(__LCC__)
         typedef __int64 mxInt64;
         typedef unsigned __int64 mxUint64;
    #  endif
    #else
       typedef int64_T mxInt64;
       typedef uint64_T mxUint64;
    #endif
    S'agissant d'un code du Matlab Component Runtime, je n'ai pas la possibilit� de le modifier pour chercher la raison de cette erreur.
    Quelqu'un aurait il une id�e de la raison qui pourrait provoquer cette erreur ?
    Je pense que le probl�me doit venir de la mani�re dont j'ai inclut la librairie ou d'un probl�me de compatibilit� compiler/librairie ou quelque chose dans le genre mais je ne m'y connais pas trop � ce sujet donc j'ai du mal � en savoir plus.
    Pour info, je travaille sous windows 10, avec Qt5.7, mon projet Qt est compil� avec MinGW_32bits. J'ai la version 2014a de Matlab et la version 8.3 du Matlab Compiler (compatible avec Matlab 2014a).
    J'esp�re avoir bien expliqu� ma situation; n'h�sitez pas si vous avez besoin de plus de pr�cisions.
    J'offre ma grande v�n�ration � la personne qui arrivera � me sortir de mon impasse

    PS: Ce projet concerne � la fois Matlab et C++ mais comme je pense que l'erreur vient plus de mon code C++ (sous Qt), j'ai jug� plus utile de le mettre dans la rubriaue C++ que Matlab.

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Vous �tes dans un forum d�di� au C++/CLI, une extension du C++ pour le Microsoft .NET Framework, donc c'est pas vraiment le bon forum pour votre question.
    Je pense que le forum li� au C++ "standard" permettrait d'avoir plus de r�ponses avis�es.

    Pourtant, cette variable mxInt64 est cens�e �tre d�finie dans ce m�me fichier mclmcr.h si j'ai bien compris:
    Oui, mais non, il est d�fini dans un certain nombre de cas de figure.
    Vous devez vraisemblablement �tre dans un cas de figure soit non support�, soit vous avez un probl�me de configuration de votre environnement.
    Utilisez les options de compilations de votre compilateur pour avoir le r�sultat du preprocessing des fichiers en erreurs.
    Vous verrez pourquoi la valeur de constantes de compilations qui vous entraine dans un cas non support�.

    Je pense que le probl�me doit venir de la mani�re dont j'ai inclut la librairie ou d'un probl�me de compatibilit� compiler/librairie
    Non, vous n'�tes pas encore � l'�dition de lien, vous avez un probl�me de configuration des constantes de compilation/ environnement non support� (phase de preprocessing).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2016
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par d�faut
    En effet il s'agit plut�t de C++, je m'en excuse, je n'avais pas saisi la nuance.


    Utilisez les options de compilations de votre compilateur pour avoir le r�sultat du preprocessing des fichiers en erreurs.
    Vous verrez pourquoi la valeur de constantes de compilations qui vous entraine dans un cas non support�.
    J'avoue ne pas trop savoir comment on proc�de pour cela. J'ai des fichiers Makefile.debug et Makefile.Release, �a peut �tre utile ? J'ai du mal � voir quelle info je dois chercher en fait :/

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    La d�finition ou pas de "mxInt64" est conditionn� par la valeur de constantes de compilation comme "__MW_STDINT_H__", "linux", "__linux", "__linux__", "macintosh", "__APPLE__", "__APPLE_CC__", "__GNUC__", "sun", "__sun", "__hpux", "_MSC_VER", "__BORLANDC__", "__WATCOMC__", ou encore "__LCC__".

    C'est donc un bon gros bordel.

    Il existe des options du compilateur pour voir le r�sultat du pr�processing et donc savoir pourquoi la combinaison de constante de compilation de votre projet tombe sur un cas o� la d�finition de "mxInt64" n'est pas ajout�s.
    Les options du compilateur utilis�es doivent �tre sp�cifi�es quelque part dans le makefile et c'est fonction du compilateur utilis�.

    Il y a des constantes de compilation li�e � la plateforme cible de la compilation : "linux", "__linux", "__linux__", "macintosh", "__APPLE__", "sun", "__sun", "__hpux".
    Il y a des constantes de compilation li�e au compilateur utilis� : "__APPLE_CC__", "__GNUC__", "_MSC_VER", "__BORLANDC__", "__WATCOMC__", ou encore "__LCC__".
    Il y a des constantes de compilation li�e au fichier d'en-t�te d�j� ajout� lors du preprocessing : "__MW_STDINT_H__".

    Il existe des moyens pour d�finir ces constantes de compilation dans les options du compilateur, mais c'est fonction du compilateur utilis�, et � mettre quelque part dans le Makefile.
    Il arrive assez souvent que la "d�finition/initialisation" ces constantes soient regroup�es dans un fichier d'en-t�te � grand renfort de #define.

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par Antoine59310 Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    #include "C:/Users\antoi/Documents/STAGE_QUEBEC/test_lena_matlab/lena_librairie_statique_test/for_testing/lena_librairie_statique_test.h"
    Il y aurait pas un soucis sur l'include avec le '\' avant "antoi"? � moins que tu sois sous windows je suppose?


    Le seul cas que je vois pour que ton type ne sois pas d�fini est le suivant:
    Aucun des define n'est d�finis.

    Je pense que �a doit venir de l'ordre d'include que tu fais. Ou alors l'environnement de build matlab n'est pas le m�me que Qt, il doit d�finir des define en plus. Regarde sur internet comment importer un projet matlab dans Qt (ou visual) pour pouvoir trouver la configuration necessaire au bon fonctionnement de la compilation.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 17/08/2015, 12h10
  2. R�ponses: 6
    Dernier message: 26/02/2013, 21h00
  3. [Artichow] Inclusion des biblioth�ques
    Par Moumoutte dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 23/10/2009, 12h39
  4. Makefile et inclusion de biblioth�que
    Par taro dans le forum C
    R�ponses: 2
    Dernier message: 01/12/2007, 00h55
  5. [Deploiement] Inclusion de biblioth�ques tierces
    Par KooKoolen dans le forum Wildfly/JBoss
    R�ponses: 2
    Dernier message: 29/01/2007, 15h23

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