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

Code::Blocks Discussion :

Distribuer un programme compilé avec x86_86-w64-mingw32-g++.


Sujet :

Code::Blocks

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Distribuer un programme compilé avec x86_86-w64-mingw32-g++.
    Salut les amis,

    Voila j'ai réussis a compiler une version Windows de mon Micro Music Player (ou mmp) en version 2.1 (amélioré),

    J'ai poster dans code-block que je n'utilse que comme éditeur !

    j'utilise MSYS2 et x86_86-w64-mingw32-g++ (enfin si le $(CXX) pointe vraiment vers celui-ci (je pense que c'est le cas))⋅.

    Voici un petit extrait du Makefile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    CXXFLAGS = -mwindows -O2 -std=c++11 # we can try -static-libstdc++ -static-libgcc -lstdc++ # but -lmingw32 make fail the build
     
    LDFLAGS = `pkg-config --cflags gtk+-3.0` `pkg-config --cflags libvlc`
     
    LDFLAGS = `pkg-config --libs gtk+-3.0` `pkg-config --libs libvlc`
    J'ai utiliser pacman pour installer les paquetages.

    Mon programme fonctionne après quelques changements comme l'absence des fonctions (C'est style C-Like):

    * realpath(...).

    * scandir(...)

    * alphasort(...).

    que j'ai dû remplacer...

    Maintenant j'aimerai le distribuer, donc le packager et pour cela il me faut les *.dll sur ler target host.

    ---

    J'ai donc créer un nouveau dossier cette fois sur mon desktop et y ai copier mon arborescence.

    Et fait un:
    Et copié toutes les libraries de la sortie qui sont dans le dossier ∕mingw-w64/... (Pas celle référant vers le dossier /c/windows/... je ne sais si c'est utile ?) vert le dossier ./bin de ma nouvelle arborescence du desktop ou se trouve mon exécutable évidement.

    Et là ce bout de code ne fonctionne pas:

    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
     
     
    int main (int argc, char *argv[]) [
     
      // ...
     
      libvlc_instance_t * libvlc_inst  = libvlc_new (0, NULL) ;
     
      if (libvlc_inst == NULL) {
     
         fprintf(stderr,"The unborn is killed in the winbee !\n") ;
         exit(EXIT_FAILURE) ;
      }
     
      // ...
     
      return 0 ; 
     
    }
    libvlc ne veut plus s'initialiser...???

    Évidemment j'ai tout essayer:

    * copier aussi les libs de /c/windows/...

    * copier tout le dossier ./bin de mingw-w64 (ou se touvent les *.dll).

    * Et même enlever le paquetage de pacman pour essayer de compiler libvlc d'après les sources sans succès.

    j'avoue que je suis étonner car libvlc est vraiment immense car il prends en charge de nombreux format de fichiers audio et vidéo.

    Et il y a si peu de dépendances quand ont fait un:
    Je vous invite donc de bien vouloir, si vous le désirez bien, m'aider a me dépêtrer de ce truc ?

    Toute aide est la bienvenue...

    Merci pour vos réponses éclairées, illuminant les ténèbres de mon ignorance.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 218 582
    Points
    218 582
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Si je comprend bien, vous êtes dans un environnement cygwin (sous Windows). Le compilateur que vous êtes sensé utilisé est t-il 32 bits ou 64 bits ? Votre système et cygwin, sont en quel version ?
    Quel est le code d'erreur retourné par le programme ? Retourne t-il le message "unborn..." ? Y-a t-il moyen d'avoir un message plus précis ?
    Peut être il faut utiliser la variable LD_LIBRARY_PATH pour pointer vers les bonnes bibliothèques. J'ai l'impression que c'est surtout un souci de DLL, mais rien n'est sur. Que se passe t-il si vous lancez avec l'interface graphique ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Bonjours je réponds rapidement par manque de temps:

    Je compile le programme avec le compilateur 64 bits natif windows fournis par MSYS2 qui me fournis aussi les libraries (gtk+-3.0 et libvlc) grâce a pacman:

    x86_64-w64-mingw32

    Sur un système Windows 7 (64 bits).

    Comme expliquer au-dessus mon programme se compile et s'exécute normalement dans l'espace MSYS2. C.a.d que ca marche dans le dossier

    /c/home/my_username/

    ce qui revient a:

    c:/msys64/home/my_username/

    Parlant de volume windows.

    Retourne t-il le message "unborn..." ? Y-a t-il moyen d'avoir un message plus précis ?
    Dès que je cherche a l'exécuter hors de MSYS avec toutes les *.dll requises:

    cp $(ldd ./bin/mmp | grep /mingw64 | gawk ' { print $3 } ') /path/to/my/try/outside/msys2/bin

    cp ./bin/mmp /path/to/my/try/outside/msys2/bin

    Donc je copie tourtes les *.dll et mon exécutable autre part...

    Et quand ont lance le programme:

    il dit bien le message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fprintf(stderr,"The unborn is killed in the winbee !\n") ;
    exit(EXIT_FAILURE) ;
    Et bien sur ce message n'est pas le même que dans mon programme mais une vision sarcastique de Windows car libvlc a une fonction qui renvoit l'erreur en court:

    Qui me renvoie NULL dans les mêmes circonstances.

    C.a.d

    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
     
    int main (int argc, char *argv[]) [
     
      // ...
     
      libvlc_new * libvlc_inst  = libvlc_new (0, NULL) ;
     
      if (libvlc_inst == NULL) {
     
         fprintf(stderr,"%s\n", libvlc_errmsg() ) ;
         exit(EXIT_FAILURE) ;
      }
     
      // ...
     
      return 0 ; 
     
    }
    PS: j'ai même lu le code source de libvlc_new(...) qui ne fait rien d'autre que de lancer les threads et allouer l'espace pour un la structure de type libvlc_instance_t de laquelle elle renvoie un pointeur.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/10/2012, 17h17
  2. Réponses: 9
    Dernier message: 01/02/2009, 16h14
  3. Réponses: 3
    Dernier message: 26/12/2008, 08h57
  4. Utiliser gprof sur un programme compilé avec Visual C++ 2005
    Par G3G3 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 31/01/2008, 22h50

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