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 :

dll qui ne fonctionne que sur mon PC ?!


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Par défaut dll qui ne fonctionne que sur mon PC ?!
    Bonjour,

    Voilà mon problème :

    J'ai créé une DLL en C. Je la mets dans system32. J'utilise la fonction de la DLL dans Excel via VBA et ça marche très bien.
    Mais quand j'essaye de l'utiliser de la même façon sur un autre ordinateur ça ne marche pas !!

    Quelqu'un a une idée de pourquoi ?


    Merci à tous pour votre aide.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    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 487
    Par défaut
    Bonjour,

    Citation Envoyé par granbapt Voir le message
    … quand j'essaye de l'utiliser de la même façon sur un autre ordinateur ça ne marche pas !! Quelqu'un a une idée de pourquoi ?
    Avec si peu d'informations, non. :-)

    Il faut que tu nous donnes tous les symptômes en détail. Ensuite, il y a de fortes chances que ta DLL soit dépendante du contexte, d'une manière générale, et d'autres DLL en particulier, qui, elles, peuvent être absentes sur ton autre machine.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Citation Envoyé par granbapt Voir le message
    Quelqu'un a une idée de pourquoi ?
    C'est très simple, soit :
    - elle est compilée en Debug
    - elle est compilée avec Visual xxxx et il manque le runtime Visual xxxx sur le PC.

    Sur le PC cible, Dependency Walker te dira quelle dépendance pose un problème.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Par défaut
    En effet, je n'avais pas fait attention au mode de compilation.

    Maintenant, mon problème a un peu évolué, lorsque je veux compiler en mode Release, j'obtiens l'erreur suivante :

    fatal error C1083: Cannot open include file: 'A2_Aff_lineique.h': No such file or directory

    alors que j'ai bien ajouté à mon projet tous les fichiers .h que j'inclue. Je ne comprends pas ce qui cloche...

    Voici mon code si ça peut vous éclairer pour me conseiller :

    toto.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #ifdef DLL_AFFAIBLISSEMENT_GAZ_EXPORTS
    #define DECLDIR __declspec(dllexport)
    #else
    #define DECLDIR __declspec(dllimport)
    #endif
     
    #include "A2_Aff_lineique.h"
    #include "A2_Aff_lineique_initialize.h"
    #include "A2_Aff_lineique_terminate.h"
     
    DECLDIR void _stdcall Affaiblissement_Gaz(real_T freq, real_T T, real_T ro, real_T p, real_T *Aff_tot, real_T *Aff_02, real_T *Aff_H20);

    toto.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "toto.h"
    DECLDIR void _stdcall Affaiblissement_Gaz(real_T freq, real_T T, real_T ro, real_T p, real_T *Aff_tot, real_T *Aff_02, real_T *Aff_H20)
    {
    	A2_Aff_lineique_initialize();
    	A2_Aff_lineique(freq,T,ro,p,Aff_tot,Aff_02,Aff_H20);
    	A2_Aff_lineique_terminate();
     
    }
    Merci d'avance pour votre aide !

  5. #5
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Citation Envoyé par granbapt Voir le message
    fatal error C1083: Cannot open include file: 'A2_Aff_lineique.h': No such file or directory
    Le message d'erreur est simple, il ne trouve pas le fichier "A2_Aff_lineique.h"
    Donc, vérifie dans un premier temps qu'il est bien là, et que le nom est bien écrit correctement (attention à la casse).

    Si c'est le cas, regarde dans le makefile si il ne manque pas quelque chose (par exemple un chemin pour les includes).

    Les .h sont bien dans le même dossier que le fichier .c ?

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Par défaut
    Merci pour ta réponse !

    Oui, j'avais bien compris le message d'erreur, d'où mon étonnement. J'ai bien vérifié, les noms des fichiers sont bien conformes, les .h et .c sont dans un même dossier. C'est pour ça que je ne comprends pas bien pourquoi j'ai ce message d'erreur.

    Il me reste donc ton idée du makefile, mais je ne sais pas comment y accéder dans VS 2008. Je vais regarder comment faire, sinon si tu peux me l'indiquer...


    Pour info : (ça vient peut être de là, je ne sais pas) j'ai paramétré VS de la manière suivante. Dans Project->Properties->C/C++->General j'ai renseigné le champs "Additional Include Directories" avec le chemin vers le dossier contenant les .h (et .c) en question. Je vais essayer en copiant/collant "brutalement" tous ces fichiers dans le dossier de mon projet, mais je ne vois pas bien en quoi ça pourrait changer quelque chose...

    A suivre...

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Par défaut
    Bon, plusieurs réponses :

    1. le "bricolage" du copier/coller ne change rien, je ne suis pas surpris
    2. j'ai finalement réussi à compiler en mode Release et maintenant ça fonctionne sur les autres PC

    Reste juste un mystère, je n'ai rien changé entre le moment où la compilation ne marchait pas et maintenant, et ça c'est ce que je déteste le plus : ne pas savoir pourquoi un truc qui ne marchait pas se met d'un coup à marcher mais bon, là ça marche alors je ne vais pas trop me plaindre non plus !

    Merci pour les conseils !

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

Discussions similaires

  1. [NASM] Int 21h qui ne fonctionne pas sur mon mini OS
    Par andromeda dans le forum Assembleur
    Réponses: 4
    Dernier message: 07/04/2007, 18h03
  2. Mon exécutable ne fonctionne que sur mon PC
    Par netsabes dans le forum Delphi
    Réponses: 6
    Dernier message: 13/02/2007, 09h56
  3. Réponses: 2
    Dernier message: 30/10/2005, 14h38

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