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

Langages de programmation Discussion :

programmation en langage QB64


Sujet :

Langages de programmation

  1. #1
    Membre averti
    Homme Profil pro
    retraité, chimie
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité, chimie
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut programmation en langage QB64
    Bonjour,
    Je programme en QB64 version 2.1 depuis longtemps !!!
    La compilation de l'un de mes programmes me renvoie :
    C++ Compilation failed
    (Check .\internal\temp\compilelog.txt)

    le fichier compilelog.txt est :

    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp:(.text+0x2183e): undefined reference to `sub_beep()'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp:(.text+0x2186f): undefined reference to `sub_beep()'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp:(.text+0x28ba2): undefined reference to `sub_play(qbs*)'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp:(.text+0x30108): undefined reference to `sub_play(qbs*)'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp:(.text+0x944e1): undefined reference to `snd_init()'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp:(.text+0x95c9d): undefined reference to `snd_mainloop()'
    C:/qb64/internal/c/c_compiler/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp:(.text+0x95f42): undefined reference to `snd_un_init()'
    collect2.exe: error: ld returned 1 exit status

    Après bien des recherches, je ne trouve pas ; merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 269
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 269
    Par défaut
    Bonjour,

    Dans le fichier compilelog.txt J'enlève 7 fois le début de la ligne, pour y voir plus clair, et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x2183e): undefined reference to `sub_beep()'
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x2186f): undefined reference to `sub_beep()' // doublon
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x28ba2): undefined reference to `sub_play(qbs*)'
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x30108): undefined reference to `sub_play(qbs*)' // doublon
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x944e1): undefined reference to `snd_init()'
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x95c9d): undefined reference to `snd_mainloop()'
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x95f42): undefined reference to `snd_un_init()'
    ensuite J'enlève 2 lignes en doublon et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x2183e): undefined reference to `sub_beep()'
    .../ld.exe: C:\Users\apiqu\AppData\Local\Temp\ccGBNyKi.o:qbx.cpp.text+0x30108): undefined reference to `sub_play(qbs*)'
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x944e1): undefined reference to `snd_init()'
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x95c9d): undefined reference to `snd_mainloop()'
    .../ld.exe: libqb\os\win\libqb_2_1_0001000000000.o:libqb.cpp.text+0x95f42): undefined reference to `snd_un_init()'
    On y voit plus clair.
    Plus qu'à essayer de comprendre ces "undefined reference"

    Ce programme compilait-il bien, avant ?
    Si oui, qu'est-ce qui a changé entre avant et maintenant ?

    PS : je ne sais absolument pas ce qu'est le langage QB64
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 574
    Par défaut
    Salut à tous,

    PS : je ne sais absolument pas ce qu'est le langage QB64
    C'est apparemment un projet qui implémente un interpréteur QuickBasic (pas tout-à-fait le même que QBasic) de l'époque avec son interface et qui produit en sortie un exécutable qui fonctionne sur les plateformes modernes. QuickBasic le faisait déjà à l'époque (sous DOS et OS/2), QBasic était sa version light, qui ne fonctionnait qu'en mode interprété, comme un BASIC normal, donc.

    Ici, le projet compile des fichiers C et C++ en arrière-plan. Ceux-ci s'appuient sur des bibliothèques qui doivent être présentes et c'est de là que vient le problème.

    Citation Envoyé par Jipété Voir le message
    On y voit plus clair.
    Plus qu'à essayer de comprendre ces "undefined reference"
    C'est le message typique du linker « ld » qui nous informe que, bien que les exécutables aient visiblement été compilés proprement à l'étape précédente par le compilateur, les API externes auxquelles ils font référence (et pour lesquelles la correspondance doit être établie) sont introuvables. Et si c'est le cas, c'est parce que la bibliothèque concernée n'est pas installée (ou alors que ce n'est pas la bonne version).

    Ce qui est étrange, c'est qu'après examen, les fonctions qui manquent ici sont toutes des fonctions internes qui appartiennent au fichier internal/c/parts/audio/out/audio.cpp.

    Il est possible que le compilateur ait été mal installé ou que l'un des chemins d'accès vers ces ressources soit mal écrit.

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