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:
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:
#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:
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.
Partager