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 Discussion :

Creation d'un executable autonome


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut Creation d'un executable autonome
    Bonjour à tous !

    Je débute en C et je souhaite créer un .exe à partir d'un code C via le compilateur gcc.

    Avant de réellement développer le code final, j'ai essayé de faire une version minimaliste pour les tests. Voici le code :

    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
    51
    #include <stdio.h>
    #include "libpq-fe.h"
    #include <stdlib.h>
     
    int     main() {
    PGconn          *conn;
    PGresult        *res;
    int             rec_count;
    int             row;
    int             col;
     
     
     
            conn = PQconnectdb("dbname=ljdata host=localhost user=dataman password=supersecret");
     
            if (PQstatus(conn) == CONNECTION_BAD) {
                    puts("We were unable to connect to the database");
                    exit(0);
            }
     
            res = PQexec(conn,
                    "update people set phonenumber=\'5055559999\' where id=3");
     
            res = PQexec(conn,
                    "select lastname,firstname,phonenumber from people order by id");
     
            if (PQresultStatus(res) != PGRES_TUPLES_OK) {
                    puts("We did not get any data!");
                    exit(0);
            }
     
            rec_count = PQntuples(res);
     
            printf("We received %d records.\n", rec_count);
            puts("==========================");
     
            for (row=0; row<rec_count; row++) {
                    for (col=0; col<3; col++) {
                            printf("%s\t", PQgetvalue(res, row, col));
                    }
                    puts("");
            }
     
            puts("==========================");
     
            PQclear(res);
     
            PQfinish(conn);
     
            return 0;
    }
    Tout droit venu d'internet, je cherche d'abord à faire dire à la console quelque chose du genre "connexion impossible" etc.


    Le but final est de créer un fichier executable sur Windows (un .exe) totalement autonome. J'entends par là qu'il suffira de télécharger le .exe, le mettre n'importe où, ne rien installer de plus pour qu'il fonctionne. Sauf que mon programme a besoin des librairies de PostgreSQL pour se connecter à ma base de donnée, et là ça coince.

    Pour les connaisseurs, j'essaye de créer quelque chose de similaire à un jar dans lequel on a copié toutes les librairies externes dont le code dépend, le tout directement dans le jar.

    Après pas mal de recherche, j'arrive à compiler mon .exe grâce à cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -m64 -I "C:\Program Files\PostgreSQL\9.6\include" -L "C:\Program Files\PostgreSQL\9.6\lib" test.c -lpq -o test.exe
    Qui, en gros, dit à gcc d'utiliser le compilateur 64 bits, d'inclure le dossier "include" de Postgresql et les librairies contenues dans le dossier lib. Ensuite vient l'option -l<lib> (ici -lpq) sensé aller chercher le fichier libpq (si j'ai bien tout compris)

    Bref me voilà avec un .exe tout beau tout neuf, mais dès que je double clique dessus (comme un utilisateur lambda) une erreur apparaît :

    Nom : error.png
Affichages : 2934
Taille : 12,3 Ko

    Après quelques recherches, la fonction "-static" de gcc semble être la solution que je recherche, mais je n'arrive pas à m'en servir (Si jamais quelqu'un sait comment s'en servir et sait l'expliquer simplement je suis preneur ).

    Sur un forum, on m'a dit de rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Wl,-rpath,"C:\Program Files\PostgreSQL\9.6\lib"
    La compilation se déroule sans accroc, mais toujours la même erreur à l'exécution.

    Comme je débute dans le C il est possible que je n'ai pas bien compris le fonctionnement et que je fasse quelque chose de travers. Voici donc en détail ce que j'ai fais jusque là :

    • J'ai téléchargé et installé PostgreSQL pour Windows dans le dossier "C:\Program Files\PostgreSQL\9.6" et ça fonctionne. Je m'en sers entre autre en java et tout roule.
    • Pour compiler en C, j'ai installé MinGW dans le dossier "C:\MinGW" puis j'ai ajouté le dossier bin de ce dernier dans ma variable PATH afin de pouvoir me servir de la commande de compilation "gcc"
    • J'ai vérifié, le libpq.dll est bien sur mon pc dans le dossier lib de Postgresql
    • Enfin j'ai créé le test.c contenant le code que je vous ai fourni. J'ai ouvert une console dans le dossier, et j'ai tapé la ligne de compilation fournie également.


    Je redis donc que le but est vraiment un .exe tout seul et entièrement autonome, je ne peux donc pas rajouter de dossier dans ma variable PATH car mes clients n'auront ni PostgresSQL d'installé sur leur machine, et encore moins une quelconque variable PATH configurée.

    Si possible, pourriez-vous m'expliquer ce que je fais de travers, et m'expliquer point par point comment je dois m'y prendre ?

    Je vous remercie de votre attention.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Citation Envoyé par maximeozenne Voir le message
    Comme je débute dans le C il est possible que je n'ai pas bien compris le fonctionnement .... J'ai vérifié, le libpq.dll est bien sur mon pc dans le dossier lib de Postgresql
    Et oui tu n'as rien pigé du tout

    Il y a 2 types (+ 1 Windows) de bibliothèques: les .lib et les .dll

    Les bibliothèques dynamiques .dll, ce sont des fichiers qui contiennent du binaire. Et tu vas faire du code, qui à l'exécution, va charger/ décharger ce code binaire en mémoire.
    Ensuite, c'est comme un exécutable qui charge/ décharger son code binaire et des appels de méthodes.
    Il y a juste la création sur le tas (malloc/ free) qu'il faut faire attention

    Avantage: Windows va se charger de détecter si ton code binaire que tu vas appeler à l'exécution est déjà chargé, et le charger à défaut.
    Donc tu peux avoir une grosse dll de plusieurs X0, X00 MO et n'utiliser qu'un morceau

    Inconvénient: DLL Hell
    Windows ne se préoccupe pas des versions des dlls
    Donc tu peux avoir un décalage de versions entre l'interface (entêtes .h) que tu utilises dans ton code, et le code binaire dans la dll.


    Les bibliothèques statiques .lib, ce sont des fichiers qui contiennent du binaire. Mais ce code binaire va être lié lors du processus de compilation et donc ajouter au code binaire de l'exécutable.

    Avantage: Faire des exécutables sans ressources externes.

    Inconvénient: les fichiers .lib se retrouvent dans ton exécutable (intégralement je ne sais pas ) Donc plus tu as de bibliothèques statiques plus ton exécutable grossit.
    Et ensuite, certaines licences comme celle de Qt disent que les bibliothèques statiques sont assimilées à du vol et l'interdisent. Donc tu te retrouvent avec X dizaines de fichiers .dlls en plus de ton exécutable


    Ensuite sous Windows tu as des fichiers .lib qui ne sont pas des bibliothèques statiques. Ce sont des fichiers binaires (des espèces de stubs) qui permettent d'automatiser le chargement/ déchargement des bibliothèques dynamiques .dll


    Comment faire une bibliothèque statique:
    1) Soit mettre toutes les sources de cette bibliothèques dans ton code

    2) Soit créer une bibliothèque statique .lib.
    Il faut créer un nouveau projet, mettre toutes les sources de cette bibliothèques, activer la bascule "-static" qui permet de produire un fichier .lib au lieu d'un exécutable .exe
    Édit: c'est un chouïa plus compliqué Lorsque tu compiles en statique, le compilateur va utiliser que des libraires statiques.
    De mémoire, cygwin ne permet pas de faire d'exécutables sans la fameuse cygwin1.dll parce que justement les développeurs ne fournissent pas la version statique cygwin1.lib

    Et ensuite cette bibliothèque statique il faut la renseigner dans ton projet: soit avec les chemins soit au #pragma link

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    Billets dans le blog
    1
    Par défaut
    Une solution est de copier la DLL dans le dossier courant, à côté de l'exe. Ce n'est pas exactement ton but mais on s'en approche : tu livres un dossier qui contient tout ce qu'il faut, et ton exe (à condition de rester dans ce dossier), sans configuration supplémentaire, devrait fonctionner.

    Attention quand même à certaines dépendances cachées : ton exe dépend peut-être d'autres DLL dispo sur ton pc dans le path mais sur un autre pc cela pourrait échouer. Il faut vider ta variable path pour t'en rendre compte (dans un script batch, appelle setlocal puis fais un set path=. ou quelque chose d'approchant). Il existe aussi des outils pour faire ça. Regarde http://www.dependencywalker.com/

    Je ne sais pas s'il est possible d'embarquer les DLL dans un exe... Je laisse d'autres répondrent à ça.

    As-tu cherché s'il existe une version pleinement statique de ta lib ?

    PS: libpq.... ca s'invente pas

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par foetus Voir le message
    2) Soit créer une bibliothèque statique .lib.
    Il faut créer un nouveau projet, mettre toutes les sources de cette bibliothèques, activer la bascule "-static" qui permet de produire un fichier .lib au lieu d'un exécutable .exe
    ...
    Et ensuite cette bibliothèque statique il faut la renseigner dans ton projet: soit avec les chemins soit au #pragma link
    Donc mettre tout ce qui est libpq.dll etc. nécessaires au fonctionnement de mon programme dans un dossier, et compiler le tout dans un .lib avec une autre ligne de commande contenant le "-static", puis inclure ce .lib avec la balise "-L" de gcc ?


    Citation Envoyé par foetus Voir le message
    Édit: c'est un chouïa plus compliqué Lorsque tu compiles en statique, le compilateur va utiliser que des libraires statiques.
    De mémoire, cygwin ne permet pas de faire d'exécutables sans la fameuse cygwin1.dll parce que justement les développeurs ne fournissent pas la version statique cygwin1.lib
    Avec MinGW il n'y a pas de soucis ?



    Citation Envoyé par Bktero Voir le message
    Une solution est de copier la DLL dans le dossier courant, à côté de l'exe. Ce n'est pas exactement ton but mais on s'en approche : tu livres un dossier qui contient tout ce qu'il faut, et ton exe (à condition de rester dans ce dossier), sans configuration supplémentaire, devrait fonctionner.
    Oui je pense que ça fonctionnera comme ça, mais j'essaye de faire au plus simple pour les futurs utilisateurs, je préfère leur fournir un .exe plutôt qu'une archive qu'ils vont devoir décompresser puis chercher le .exe au milieu de toutes les .dll... si je pouvais éviter ça serait bien

    Citation Envoyé par Bktero Voir le message
    As-tu cherché s'il existe une version pleinement statique de ta lib ?
    J'ai essayé, mais je ne sais vraiment pas où chercher, mes recherches google sur le sujet ne donnent pas grand chose !

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Je ne sais pas s'il est possible d'embarquer les DLL dans un exe... Je laisse d'autres répondrent à ça.
    Sous Windows c'est possible

    Il faut faire un fichier .rc contenant ces lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define IDF_MY_DLL  103
     
    IDF_MY_DLL RCDATA "DLLs\\libpq.dlll"
    Ensuite, il faut coder la détection de la présence de cette (ces) dll(s) dans le bon dossier et à défaut, la (les) copier dedans (c'est une copie binaire de ta ressource contenue dans ton exécutable).

    Moi, j'ai codé un FileManager avec l'API de Windows Ce n'est pas trop compliqué (sauf les canonization de chemins, l'unicode pourri de Windows et l'élévation des privilèges), mais c'est un chouïa long pour bien tester


    Citation Envoyé par maximeozenne Voir le message
    Donc mettre tout ce qui est libpq.dll etc. nécessaires au fonctionnement de mon programme dans un dossier, et compiler le tout dans un .lib avec une autre ligne de commande contenant le "-static", puis inclure ce .lib avec la balise "-L" de gcc ?
    Cela ne sert à rien , parce que ce que tu ne comprends pas, ta .dll tu en as seulement besoin à l'exécution et non pas à la compilation.

    C'est pour pouvoir lancer ton programme dans ton IDE que tu as besoin de la dll


    Citation Envoyé par maximeozenne Voir le message
    Avec MinGW il n'y a pas de soucis ?
    Je n'ai jamais utilisé MinGW. Moi c'est cygwin et Visual Express

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par foetus Voir le message

    Il faut faire un fichier .rc contenant ces lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define IDF_MY_DLL  103
     
    IDF_MY_DLL RCDATA "DLLs\\libpq.dlll"
    Ensuite, il faut coder la détection de cette (ces) dll(s) et à défaut, les copier dans le bon dossier.
    Dit comme ça, ça a l'air simple, mais c'est traitre non ? haha

    Admettons que je rajoute ce fichier dans le dossier contenant mon .c.

    Ensuite, je dois créer un dossier DLLs, puis mettre libpq.dll + toutes les autres dedans ? (J'essaye de comprendre le "il faut coder la détection de cette (ces) dll(s)")

    Donc ensuite rajouter des lignes de code dans le .c ? Ou dire à gcc de récupérer le .rc ? (Rah je pige pas c'est rageant )

    Citation Envoyé par foetus Voir le message
    Moi, j'ai codé un FileManager avec l'API de Windows Ce n'est pas trop compliqué (sauf les canonization de chemins, l'unicode pourri de Windows et l'élévation des privilèges), mais c'est un chouïa long pour bien tester
    ça c'est quand tu utilises souvent les .rc non ? Je vais d'abord essayer de le faire manuellement une première fois...

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    C'est spécifique à Windows Resource Files
    Donc compilateur Windows (avec gcc c'est peut-être possible je n'ai pas regardé)

    En gros, tu vas avoir ton code source (.h, .c, .cpp, ...) et éventuellement un fichier .rc (+ le manifeste Windows)

    Et ce fichier .rc permet de définir les méta-données de ton application (langues, version, nom du produit, ...), son icône, de décrire des fenêtres WinApi, ... et de rajouter dans ton exécutable des images, des icônes, des bitmaps, ... et du binaire (RCDATA)

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    ça a l'air de clairement correspondre à ce que je veux faire, tu pourrais m'orienter vers un bon tuto pour installer et débuter l'utilisation de tout ça ?

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Je me demande justement s'il ne faut pas des versions professionnels de Visual pour avoir un compilateur de ressources (RC.EXE ou celui de Borland BRCC32.EXE)

    Et niveau tutoriel, c'est à toi de jouer parce que cela existe depuis plus de 20 ans: et donc il y a des milliers de tutoriels

    Et justement je me demande, si depuis Windows 8, Microsoft n'a pas étendu un peu le truc: support de l'Unicode, ne plus avoir des images en .bmp, mais des .jpg ou .png ...

    Et enfin je me demande, si tu ne peux pas faire un truc de façon manuel: tu trouves un compilateur de ressources Windows.
    Et après avoir compilé ton exécutable, faire tout le travail "ressources" à la console Windows



    Mais le mieux et le plus simple: trouve les sources de cette libpq.dll

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    En fait, on peut embarquer n'importe quoi en tant que ressources, mais:
    • On ne peut pas demander à Windows de "charger" une DLL depuis la mémoire, donc il faut forcément la copier sur disque (ou faire le chargement soi-même, si c'est possible)
    • Une bonne partie des ressources "standard" ne sont pas embarquées telle quelles: Les .bmp perdent leur BITMAPFILEHEADER, les icônes et curseurs sont séparés en leur composants de base, etc.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    En lisant la documentation de PostgreSQL (libpq.dll semble venir de ce projet *), c'est bien écrit que tu peux générer une librairie statique libpq.lib
    Installation sur Windows du seul client

    make -N -DCFG=Release /f bcc32.mak

    Les fichiers suivants seront produits :

    interfaces\libpq\Release\libpq.dll

    la bibliothèque client ;
    interfaces\libpq\Release\libpqdll.lib

    la bibliothèque d'import nécessaire à l'édition de liens avec libpq.dll
    interfaces\libpq\Release\libpq.lib

    la version statique de la bibliothèque d'interface client ;
    bin\psql\Release\psql.exe

    le terminal interactif de PostgreSQL™.


    De toute manière les sources sont présentes sur cette page: File Browser
    Donc comme je l'ai dit tu te prends la tronche pour rien il faut compiler PostgreSQL en statique (parce que le projet est trop gros pour être mis même le minimum, dans ton projet)


    *: Tu dois quand même avoir une interface (fichiers .h) pour compiler, avec des commentaires/ copyright. Ce ne vient pas de provenance inconnue fait par un lambda/ nobody

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par foetus Voir le message
    En lisant la documentation de PostgreSQL (libpq.dll semble venir de ce projet *), c'est bien écrit que tu peux générer une librairie statique libpq.lib
    Installation sur Windows du seul client
    Du coup avec ça je pourrais ensuite lier le .lib à la compilation du .exe et déployer le tout ? Les copyrights etc. ne sont pas un problème ça ne me gêne pas du tout, au contraire !

  13. #13
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maximeozenne Voir le message
    Du coup avec ça je pourrais ensuite lier le .lib à la compilation du .exe et déployer le tout ?
    Je pense qu'il faudrait que tu comprennes bien ce qu'est une bibliothèque (library en anglais) statique et qu'est une bibliothèque dynamique. Cela t'aiderait sans doute à orienter tes recherches pour créer ton exécutable autonome.

    Citation Envoyé par maximeozenne Voir le message
    Les copyrights etc. ne sont pas un problème ça ne me gêne pas du tout, au contraire !
    C'est-à-dire ?!

Discussions similaires

  1. Creation d'un executable independant utilisant BDE
    Par Nephi dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/07/2008, 18h23
  2. probleme de connexion à la BD apres creation de l'executable
    Par 01211983 dans le forum Général Java
    Réponses: 3
    Dernier message: 11/04/2008, 16h21
  3. probleme avec la creation d'un executable
    Par Mo_Poly dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2007, 09h22
  4. [jbuilder 9] [debutant] creation d'un executable
    Par matN59 dans le forum JBuilder
    Réponses: 2
    Dernier message: 18/11/2004, 19h16

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