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

MATLAB Discussion :

Problème avec le linker de MinGW (TDM-GCC-64) et OpenMP sur Windows [MEX]


Sujet :

MATLAB

  1. #1
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut Problème avec le linker de MinGW (TDM-GCC-64) et OpenMP sur Windows
    Bonjour,

    Après avoir écumé le web pendant des jours pour compiler des fichiers mex, j'appelle à l'aide !
    Je souhaite travailler avec ces codes Matlab ici. Ca contient des fichiers en cpp, que j'ai besoin de compiler à l'aide d'une fonction fournie.

    N'ayant pas de compiler sur mon ordinateur, j'ai commencé par installer TDM-GCC-64, car j'ai besoin d'utiliser openmp, j'ai utilisé gnumex pour pouvoir indiquer à Matlab d'utiliser ce compiler, j'ai modifié le path, enfin bref je pense avoir installé le truc correctement.
    J'ai ensuite dû modifier le fichier mexopts.bat comme expliqué ici pour faire fonctionner la compilation d'un fichier exemple tout simple : yprime.c fourni avec Matlab. Ca marche pour ce fichier là mais pour le code que j'essaie de compiler, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    collect2.exe: error: ld returned 1 exit status 
     
      C:\PROGRA~1\MATLAB\R2013B\BIN\MEX.PL: Error: Link of 'C:\Users\Elise\Desktop\AFIS\CSH_code_v3\C_and_Mex\votemex.mexw64' failed. 
     
    Unable to complete successfully.
    J'ai modifié mon fichier mexopts.bat en m'inspirant de ce lien. Ca n'a rien changé... J'obtiens toujours cette même erreur et je suis à court d'idées pour solutionner ça.

    J'ai bien trouvé cette discussion sur ce forum http://www.developpez.net/forums/d14...w-erreur-link/ Je ne comprends pas les réponses malheureusement, un peu trop technique pour moi... J'ai l'impression que le problème vient de Mingw ou de mon fichier mexopts.bat.

    Quelqu'un a-t-il une idée ?

    J'utilise Matlab 2013b sous Windows 8.1.
    La commande Matlab utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mex OPTIMFLAGS="-DNDEBUG -DMEX_MODE -fopenmp"  knn.cpp mexutil.cpp nn.cpp votemex.cpp patch.cpp vecnn.cpp
    simnn.cpp allegro_emu.cpp -output ../votemex
    Le .bat :
    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
    @echo off
     
    :: Set this to your Mingw64 top folder, where you extracted the above
    set MINGWPATH=C:\TDM-GCC-64
     
    :: Leave these alone unless you know what you're doing.
    set PATH=C:\TDM-GCC-64\x86_64-w64-mingw32\bin;%PATH%
    set PRELINK_CMDS=echo.>%TEMP%\mexstaticlibs
     
    :: You can have MEX run some commands before calling the linker.
    :: The two examples below will cause gcc to output the full path to some
    :: static libraries so you can link statically to them (see the
    :: LINGFLAGSPOST special var below). You can set any command here, however.
    rem set PRELINK_CMDS1=gcc -print-file-name=libwinpthread.a >> %TEMP%\mexstaticlibs
    rem set PRELINK_CMDS2=gcc -print-file-name=libquadmath.a >> %TEMP%\mexstaticlibs
    rem set PRELINK_CMDS3=...
     
    :: You can have MEX run some commands also after calling the linker
    :: (e.g. upx compress the output .mex)
    rem set POSTLINK_CMDS1=upx -9 "%OUTDIR%%MEX_NAME%%MEX_EXT%"
    rem set POSTLINK_CMDS2=...
     
    :: You can change these if you really need to.
    set COMPILER=g++
    set COMPFLAGS=-c -I"%MATLAB%\extern\include" -DMATLAB_MEX_FILE
    set OPTIMFLAGS=-O3 -funroll-loops -DNDEBUG
    set DEBUGFLAGS=-g
    set NAME_OBJECT=-o
     
    set LINKER=x86_64-w64-mingw32-g++
    set LINKFLAGS=-shared -static-libstdc++ -static-libgcc -L"%MATLAB%\bin\win64" -L"%MATLAB%\extern\lib\win64\microsoft"  -leng -lmwlapack -lmwblas
    set LINKFLAGSPOST=@%TEMP%\mexstaticlibs -lmx -lmex -lmat
    set LINKOPTIMFLAGS=-O2
    set LINKDEBUGFLAGS=-g
    set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%"

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Tu peux créer un fichier batch mexgcc.bat basé sur cet exemple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
     
    set GCCPATH=C:/TDM64/bin/
    set CC=x86_64-w64-mingw32-gcc
     
    set MATLABPATH=C:/MATLAB/R2014b/
    set arch=64
     
    if exist %1.mexw%arch% del %1.mexw%arch%
     
    %GCCPATH%%CC% -m%arch% -fopenmp -shared -I"%MATLABPATH%extern/include" -DMATLAB_MEX_FILE -o %1.mexw%arch% -Wl,--export-all-symbols %1.c -L"%MATLABPATH%bin/win%arch%" -lmex -lmx -leng -lmat

    Il faudra sans doute adapter la définition des variables au début du code.

    Avec un exemple simple test_openmp_helloworld.c (adapté de l'ouvrage Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation) :
    Code C : 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
    #include <omp.h>
    #include <mex.h>
     
    void mexFunction(int nlhs, mxArray *plhs[],
            int nrhs, const mxArray *prhs[])
     
    {
     
    int nthreads, tid;
     
    /* Fork a team of threads with each thread having a private tid variable */
    #pragma omp parallel private(tid)
      {
     
      /* Obtain and print thread id */
      tid = omp_get_thread_num();
      mexPrintf("Hello World from thread = %d\n", tid);
     
      /* Only master thread does this */
      if (tid == 0) 
        {
        nthreads = omp_get_num_threads();
        mexPrintf("Number of threads = %d\n", nthreads);
        }
     
      }  /* All threads join master thread and terminate */
     
    }

    A compiler comme ceci depuis le Command Window de MATLAB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !mexgcc.bat test_openmp_helloworld
    Ce qui donne normalement (au nombre de thread près) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >> test_openmp_helloworld
    Hello World from thread = 0
    Number of threads = 8
    Hello World from thread = 1
    Hello World from thread = 5
    Hello World from thread = 4
    Hello World from thread = 7
    Hello World from thread = 2
    Hello World from thread = 6
    Hello World from thread = 3
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Salut

    Merci beaucoup de t'intéresser à mon problème ! J'ai fait ce que tu m'as dit à savoir, créer le mexgcc.bat que j'ai rangé au même endroit que le mexopts.bat. J'ai ensuite copié-collé le fichier .c dans mon répertoire de travail.

    J'obtiens cependant une erreur lorsque j'utilise la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    !mexgcc.bat test_openmp_helloworld
    'mexgcc.bat' n'est pas reconnu en tant que commande interne 
    ou externe, un programme ex‚cutable ou un fichier de commandes.
    Pourtant, lorsque je tape dans la commande Windows:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mexgcc.bat test_openmp_helloworld
    Il semble reconnaître le fichier puisque l'erreur est différente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x86_64-w64-mingw32-gcc: error: libgomp.spec: No such file or directory
    Si j'ai bien compris, l'erreur que renvoie Matlab est une erreur de l'OS. J'ai ajouté ce qui suit dans les variables d'environnement Windows, sans succès...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\TDM-GCC-64\bin;C:\Users\Elise\AppData\Roaming\MathWorks\MATLAB\R2013b;C:\TDM-GCC-64\x86_64-w64-mingw32\bin;
    Une idée pour faire reconnaître ce fichier à Matlab?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Pour ton premier problème, tu dois mettre le fichier mexgcc.bat dans le même dossier que ton fichier .c

    Pour le deuxième problème, as-tu bien sélectionné OpenMP lors de l'installation de TDM-GCC ?
    Images attachées Images attachées  
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Pour ton premier problème, tu dois mettre le fichier mexgcc.bat dans le même dossier que ton fichier .c
    En effet, ça fonctionne mieux^^ Je saisis pas trop ce que ce fichier fait, je veux bien un petit éclairage sur ce point

    Pour le deuxième problème, as-tu bien sélectionné OpenMP lors de l'installation de TDM-GCC ?
    Ouuuuuups! Bon ben, j'ai coché et ça a marché sur le code exemple Merci !

    Je teste tout ça cet aprem sur mon code principal et je reviens vers vous si problème.

    En tout cas, merci encore pour l'aide !

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Citation Envoyé par eskapp Voir le message
    Je saisis pas trop ce que ce fichier fait, je veux bien un petit éclairage sur ce point
    Si tu remplaces les variables par leurs valeurs, le fichier ne fait qu'exécuter la commande suivante :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    C:/TDM64/bin/x86_64-w64-mingw32-gcc -m64 -fopenmp -shared -I"C:/MATLAB/R2014b/extern/include" -DMATLAB_MEX_FILE -o test_openmp_helloworld.mexw64 -Wl,--export-all-symbols test_openmp_helloworld.c -L"C:/MATLAB/R2014b/bin/win64" -lmex -lmx -leng -lmat

    Pour chaque option, il faut consulter la documentation de GCC :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Ok merci pour l'éclairage

    J'ai toujours un soucis... Bien que les compilations des fichiers .c et .cpp, quand elles sont appelées une par une, marchent parfaitement moyennant une petite modification du mexgcc.bat, j'ai cette ligne à compiler :
    Au départ c'était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex OPTIMFLAGS="-DNDEBUG -DMEX_MODE -fopenmp" knn.cpp mexutil.cpp nn.cpp votemex.cpp patch.cpp vecnn.cpp simnn.cpp allegro_emu.cpp -output ../votemex
    Mon nouveau .bat ne comprend pas OPTIMFLAGS, ce qui me semble logique puisque c'est un paramètre de mexopts qui n'est plus appelé ici. Cependant, quand je donne l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !mexgcc.bat knn mexutil nn votemex patch vecnn simnn allegro_emu -output ../votemex
    j'obtiens des kilomètres d'erreurs. Est-ce que la compilation de plusieurs .cpp en un seul .mex est possible avec ce nouveau fichier .bat ?

    Comme les erreurs font vraiment des kilomètres j'ai coupé certaines parties redondantes du message d'erreur et j'ai remplacé par [...] :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    In file included from mexutil.h:6:0, 
                     from patch.h:16, 
                     from simpatch.h:7, 
                     from knn.cpp:8: 
    C:\Program Files\MATLAB\R2013b\extern/include/mex.h:215:0: warning: "printf" redefined 
     #define printf mexPrintf 
     ^ 
    In file included from knn.h:7:0, 
                     from knn.cpp:6: 
    nn.h:63:0: note: this is the location of the previous definition 
     #define printf (void) 
     ^ 
    In file included from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/backward/hash_set:60:0, 
                     from knn.cpp:11: 
    C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp] 
     #warning \ 
      ^ 
    knn.cpp:50:0: warning: "M_PI" redefined 
     #define M_PI 3.1415926535897932384626433832795 
     ^ 
    In file included from knn.cpp:7:0: 
    C:/TDM-GCC-64/x86_64-w64-mingw32/include/math.h:45:0: note: this is the location of the previous definition 
     #define M_PI  3.14159265358979323846 
     ^ 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x11): undefined reference to `bitmap_color_depth(BITMAP*)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x68): undefined reference to `create_bitmap_ex(int, int, int)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x18e): undefined reference to `bitmap_color_depth(BITMAP*)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x1e5): undefined reference to `create_bitmap_ex(int, int, int)' 
    [...]
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0xb4e): more undefined references to `destroy_bitmap(BITMAP*)' follow 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x10a5): undefined reference to `create_bitmap(int, int)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x119c): undefined reference to `init_xform_tables(double, double, int)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text+0x11a6): undefined reference to `operator new(unsigned long long)' 
    [...]
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.xdata+0x1a0): undefined reference to `__gxx_personality_seh0' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.xdata+0x2c0): undefined reference to `__gxx_personality_seh0' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.xdata+0x35c): more undefined references to `__gxx_personality_seh0' follow 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN17LargeKPositionSet4initEPiPSt6vectorI8knn_pairIiESaIS3_EEi[_ZN17LargeKPositionSet4initEPiPSt6vectorI8knn_pairIiESaIS3_EEi]+0x6a): undefined reference to `operator new[](unsigned long long)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN17LargeKPositionSet4initEPiPSt6vectorI8knn_pairIiESaIS3_EEi[_ZN17LargeKPositionSet4initEPiPSt6vectorI8knn_pairIiESaIS3_EEi]+0xa2): undefined reference to `operator new[](unsigned long long)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN17LargeKPositionSetD1Ev[_ZN17LargeKPositionSetD1Ev]+0x25): undefined reference to `operator delete[](void*)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN17LargeKPositionSetD1Ev[_ZN17LargeKPositionSetD1Ev]+0x40): undefined reference to `operator delete[](void*)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN9KNNSolver1fEPd[_ZN9KNNSolver1fEPd]+0x15a): undefined reference to `destroy_bitmap(BITMAP*)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_ZN9VECBITMAPIiEC1Eiii[_ZN9VECBITMAPIiEC1Eiii]+0x72): undefined reference to `operator new[](unsigned long long)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_Z15knn_init_dist_nILi1EEP9VECBITMAPIiEP6ParamsP6BITMAPS6_S2_S2_[_Z15knn_init_dist_nILi1EEP9VECBITMAPIiEP6ParamsP6BITMAPS6_S2_S2_]+0x56): undefined reference to `init_xform_tables(double, double, int)' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.text$_Z15knn_init_dist_nILi1EEP9VECBITMAPIiEP6ParamsP6BITMAPS6_S2_S2_[_Z15knn_init_dist_nILi1EEP9VECBITMAPIiEP6ParamsP6BITMAPS6_S2_S2_]+0x60): undefined reference to `operator new(unsigned long long)' 
    [...]
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.rdata$_ZTI13ObjectiveFunc[_ZTI13ObjectiveFunc]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.rdata$_ZTI19KNNSolverWeightFunc[_ZTI19KNNSolverWeightFunc]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info' 
    C:\Users\Elise\AppData\Local\Temp\ccyWui98.o:knn.cpp:(.rdata$_ZTI13KNNWeightFunc[_ZTI13KNNWeightFunc]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info' 
    collect2.exe: error: ld returned 1 exit status
    Je dois bien avouer que j'y comprends pas grand chose...

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Essaie avec cette version de mexgcc.bat (en adaptant les chemins vers GCC et MATLAB)

    Code Bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
     
    set GCCPATH=C:/TDM64/bin/
    set CC=x86_64-w64-mingw32-gcc
     
    set MATLABPATH=C:/MATLAB/R2014b/
    set arch=64
     
    if exist votemex.mexw%arch% del votemex.mexw%arch%
     
    %GCCPATH%%CC% -m%arch% -fopenmp -shared -I"%MATLABPATH%extern/include" -DMATLAB_MEX_FILE -o votemex.mexw%arch% -Wl,--export-all-symbols knn.cpp mexutil.cpp nn.cpp votemex.cpp patch.cpp vecnn.cpp simnn.cpp allegro_emu.cpp -L"%MATLABPATH%bin/win%arch%" -lmex -lmx -leng -lmat

    Si tu obtiens un long message d'erreur, copie-le dans un fichier texte (dans une archive zip ou rar) et attache-le à ton prochain message
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Avec beaucoup de retard, merci pour toute cette aide précieuse !
    J'avais finalement réussi à faire mes compilations et à pouvoir travailler avec la toolbox qu'ils permettaient d'installer.

    J'ai compris beaucoup de choses sur ces fichiers de configuration et la compilation de fichiers mex donc THX

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/01/2015, 17h37
  2. probléme avec le linker . erreur fatale
    Par yann458 dans le forum C++
    Réponses: 2
    Dernier message: 19/08/2014, 09h53
  3. Réponses: 2
    Dernier message: 20/04/2011, 15h26
  4. MinGW / TDM-GCC
    Par minnesota dans le forum C++
    Réponses: 6
    Dernier message: 01/07/2010, 09h36
  5. Réponses: 2
    Dernier message: 11/08/2009, 12h49

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