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 :

"Cannot execute program" pourquoi ?


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut "Cannot execute program" pourquoi ?
    hello,

    Je dois faire un programme qui utilise des DLL fournies par une société.
    J'essai pour l'instant d'utiliser la premier fonction qui est "Connect", c'est à dire connexion à la base Oracle.
    Je compile mon programme et j'ai 0 erreurs et 0 warnings ... donc je me dit parfait ... et bien non ... quand je l'éxécute j'ai un message d'insulte qui me dit : "Cannot execute program" ...

    Ma question est : sauriez-vous m'aider ?????????

    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
     
     
    #include <malloc.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
     
    using namespace std;
     
    extern "C" {
    	#include "gen.hpp"
    }
     
    int main (int argc, char* argv[]) {
     
    	char* cUser = "USER";
    	char* cAlias = "ALIAS";
    	char  cError[255];
     
    	//Connect to LIQ database
    	if (Connect(cAlias, cUser, cError) != 0 ) {
    		cout << "Connect returned an error :" << cError << endl;
    		exit(1);
    	}
     
    	cout << "Connexion OK" << endl;
     
    	return 0;
    }
    J'ai ajouté mon répertoire de dev aux répertoires pour les "include", "Library" et "Ressource" files.
    J'ai aussi ajouté le fichier "gen.hpp" aux fichiers "header" de mon projet.

    Que fais-je de mal ????

    Merci pour l'aide ...
    Hathor.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    J'avais oublié un petit truc (un oubli très bête ... passons) ... maitennant quand je compile j'ai le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    C:\WorkArea\CppProgram\Debug\ATCStaticData.o: In function `main':
    C:\WorkArea\CppProgram\ATCStaticData.cpp:20: undefined reference to `_imp__Connect@12'
    Je comprends pas ???

    Help me please !!!
    Hathor

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    C'est une erreur de lien, ton linker ne sait pas où trouver la librairie (ou alors il ne sait même pas qu'il doit lier avec cette librairie). Faut le lui spécifier, après celà dépend si tu travailles directement sur le Makefile ou avec un IDE.

  4. #4
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Tu as oublier de linker une bibliotheque a ta DLL ou bien a ton programme.

    C'est la bibloiotheque qui definit la fonction suivante : Connect

  5. #5
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut Pb Dll & Lib
    Bonjour,
    Je reviens sur mon problème de DLL. La librairie ne m'est pas fournie avec la DLL, j'essai donc de la générer sous DOS mais cela ne fonctionne pas.

    Là encore, la question est : que fais-je de travers ?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    D:\>implib gen.lib gen.dll
    'implib' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Merci beaucoup pour l'aide,
    Hathor.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Sous DOS ou sous l'invite de commandes de Windows 2000/XP ?
    2. Le message d'erreur est explicite: L'interpréteur ne connait pas "implib" et si c'est un exe, il n'est pas dans ce dossier. Plusieurs solutions:
      • Lancer la commande en étant dans le dossier où se trouve implib.exe (tu devras donc indiquer le chemin de ta DLL)
      • Lancer la commande en indiquant le chemin complet (absolu ou relatif) de implib.exe
      • Ajouter le chemin du dossier où se trouve implib.exe dans la variable d'environnement PATH avant de lancer la commande.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    OK, en fait je suis sous windows XP et donc j'utilise l'invit de commande ... mais mon problème venait surtout du fait que nulle part je n'avais "implib.exe" !!!!
    Après une petite recherche, il se trouve que j'utilise "MinGw", donc j'ai utiliser "dlltool" dans l'invit de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Program Files\OpenSource\MinGWStudio2\MinGW\bin>dlltool --dllname gen.dll --output-lib gen.lib
    et miracle, j'ai une lib qui a été générée ... je l'ai intégré à mon projet ... mais quand j'exécute le programme j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Linking...
    C:\Program Files\OpenSource\MinGWStudio2\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: C:\CppProgram: No such file: Permission denied
    collect2: ld returned 1 exit status
     
    Prog.exe - 1 error(s), 0 warning(s)
    Please help me .. encore ...
    Hathor.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Vérifie que tu ne cherches pas à créer l'exe dans un répertoire où tu n'as pas le droit d'écrire (comme la racine de C:\ si tu n'es pas admin)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    Je ne comprends pas ... J'ai pourtant les droits admin sur mon poste ... J'ai même ajouté le répertoire de compil et mon répertoire de travail dans la variable d'environnement PATH, et l'erreur persiste ...

    une idée ?

    Merci

  10. #10
    Membre émérite Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Par défaut
    fait un echo $PATH et regarde ce que ca te sort??

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ça sortira "$PATH", Hathor bosse sous l'invite de commandes Windows...
    Mais tu peux vérifier avec echo %PATH%.

    Mais à ta place, je vérifierais surtout les droits de C:\CppProgram (tu as la commande CACLS si tu es sous XP familial, sinon tu as des outils plus efficaces intégrés à l'explorateur)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    J'ai les droits d'admin sur mon poste, donc cela ne doit pas être cela.

    D'autre part, dans la variable d'environnement système j'ai ajouté à la variable PATH :
    1.Mon répertoire de travail (là où j'ai mon code)
    2.Le répertoire "C:\....\MinGWStudio2\MinGW\bin" où se trouve "g++.exe" and co.

    Erreur ?
    Merci pour l'aide ...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je pense que le répertoire de travail est inutile, et surtout n'a rien à faire dans le PATH système (partagé entre tous les utilisateurs). Il serait mieux dans ton PATH utilisateur.
    Par contre, c'est OK pour le répertoire \bin de MinGW.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Execution macro quoting
    Par lhonolulu dans le forum Macro
    Réponses: 1
    Dernier message: 11/03/2014, 15h28
  2. Réponses: 13
    Dernier message: 19/07/2006, 14h28

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