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 :

Probleme de DLL


Sujet :

C++

  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut Probleme de DLL
    Bonjour
    j'ai crée une DLL avec VC2005 sur un ordinateur (qui est configuré en langue anglaise). J'utilise cette DLL avec VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Declare Function n Lib "V:\finum" Alias "_N@8" (ByVal x As Double) As Double
    Cette DLL fonctionne parfaitement quand je la fait tourné sur mon poste, mais quand je la fais tourné sur un autre poste (cette fois ci la langue est fr), VBA m'envoie un prompt en disant que le fichier de la DLL est introuvable.

    Savez vous d'ou ca peut venir?

    Les ordinateurs sont branchés en reseaux. Donc c'est le même fichier Excel que j'ouvre, et donc c'est dans le meme fichier que la DLL tourne, que ce soit sur mon poste, ou l'autre poste.


    Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Es-tu sûr que la DLL est bel et bien présente sur les deux postes ?
    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.

  3. #3
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    oui bien sur,
    puisque les ordis sont en reseaux
    je veux dire que le fichier est installé dans un disque dur en reseau sur plusieurs terminaux

  4. #4
    Membre éprouvé
    Inscrit en
    Décembre 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 103
    Par défaut
    Dit moi si je me trompe, c'est surement que la DLL est mal partagé. Le mieux est que chaque PC est son exemplaire dans C:\Windows, comme ça, il y a moins de risques que ça échoue (essaye en mettant le logiciel en question sur chaque pc...)

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    SURTOUT PAS DANS C:\Windows !!!!!

    Par contre, dans un autre répertoire auquel Excel a accès, pourquoi pas.
    Tu devrais essayer d'ajouter le répertoire en question au PATH (Propriétés systèmes -> Avancé -> Variables d'environnement).

    Et je ne pense pas que ça marche si la DLL est directement dans le répertoire du fichier Excel. Mais ça marche peut-être quand même.
    Toutefois, ça ne marche peut-être pas avec les chemins réseaux (\\ordi\blabla). Tu peux essayer avec un lecteur réseau par contre.
    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.

  6. #6
    Membre éprouvé
    Inscrit en
    Décembre 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 103
    Par défaut
    Désolé, je ne savais pas (bien qu'avec VC++ 2005 ça marche).
    Se pourrait-il que ça soit la langue qui gene ? (je crois pas, mais on ne sait jamais ...)

  7. #7
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par 30barrett40 Voir le message
    Désolé, je ne savais pas (bien qu'avec VC++ 2005 ça marche).
    Se pourrait-il que ça soit la langue qui gene ? (je crois pas, mais on ne sait jamais ...)
    Bof. Si le message explicite qu'il ne trouve pas la dll c'est qu'il ne la trouve pas dans le repertoire d'execution ou dans le PATH.

    Maintenant si tu as un doute tu regénéres ta dll avec la même version de langue que l'hôte cible.

  8. #8
    Membre éprouvé
    Inscrit en
    Décembre 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 103
    Par défaut
    Surement raison !
    Mais si c'est en réseau, la meilleure technique est de mettre l'application sur le pc qui va s'en servir, non ?

  9. #9
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Merci pour les reponses
    Je pense avoir trouver le probleme

    Lorsqu`on fait un prog en C et qu`on le compile dans VC++2005, il y a des DLL qui sont charges implicitement.

    J`ai compile mon prog sur mon poste qui a VC2005
    Les DLL ont ete chargees avec les chemins d acces de mon poste.

    Quand je le transfere sur un autre poste qui a pas VC2005, il ne trouve pas les DLL car ce ne sont pas les memes chemins d acces.

    Donc c est donc un pb de linking et de portabilite.
    Enfin je pense.


    Mais en tout cas, je n ai pas pu resoudre le pb.

    Ce n est pas la langue qui gene, car j ai essaye sur un poste qui est en anglais

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    D'un coup j'ai un doute....

    Tu dis "introuvable" ou "n'a pas pu être chargé" ?

    Parceque ton truc, ca me fait penser à une DLL compilée avec des options de debug, et utilisée sur un poste *sans* debuggeur (de visual), donc sans les DLL runtime-debug de visual (qui au passage sont privées et non redistribuables).

    Quant au:
    Les DLL ont ete chargees avec les chemins d acces de mon poste
    Les DLL sont référencées par nom, aucun chemin n'est spécifié.

    Quand un executable (visual-basic par exemple) a besoin d'une DLL, il va la chercher dans une liste prédéfinie de chemins d'accès, en commençant par le répertoire de l'executable lui-même,...
    Cette DLL peut aussi avoir besoin d'autres DLL (par exemple le debug-runtime de visual), et hop... les mêmes chemins sont inspectés.

    Sur ta machine, ou VS2005 est installé, les DLLs debug-runtime sont accèssibles dans le système => aucun problême
    Sur une autre machine => ca plante.

  11. #11
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Ta reponse est interessante

    Parceque ton truc, ca me fait penser à une DLL compilée avec des options de debug, et utilisée sur un poste *sans* debuggeur (de visual), donc sans les DLL runtime-debug de visual (qui au passage sont privées et non redistribuables)

    >>C est tout a fait ca. Sur l autre poste, il y a aucun compilo/debuger


    Sur ta machine, ou VS2005 est installé, les DLLs debug-runtime sont accèssibles dans le système => aucun problême
    Sur une autre machine => ca plante.
    >>Que faut il faire maintenant pour regler ce pb?

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    La meilleure solution est:
    1. Faire un projet d'installeur (.msi) (sous VStudio c'est assez simple) qui groupe ta DLL et le redistributable runtime.
    2. Compiler en release.
    3. Utiliser l'installeur sur les machines cibles (qui offre au passage la désinstallation, l'installation silencieuse par domain deployment, ...).

    La moins bonne solution:
    1. Compiler en release.
    2. Installer le "redistributable runtime" qui vient avec MSVC "à la main" sur les machines cibles.

    La solution interdite:
    1. Installer le "debug runtime" sur les machines cibles (l'EULA de M$ n'autorise pas cela).

  13. #13
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    merci pour la reponse

    J ai besoin de plus de precision, parce que je comprends pas tout

    Mon programme est court 200 lignes de codes, et est ecrit qu'en C.

    J'utilise VC2005 Express sur une machine. Je n'ai pas le droit de l'installer sur un autre poste (theoriquement...)

    Ma question est: Dois-je installer VC2005 sur le poste hote de la DLL? (parce que vois-tu cette DLL sera utilisee sur de nombreux postes).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Faire un projet d'installeur (.msi) (sous VStudio c'est assez simple) qui groupe ta DLL et le redistributable runtime.
    >>C'est possible avec VCExpress2005?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2. Compiler en release.
    Ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3. Utiliser l'installeur sur les machines cibles (qui offre au passage la désinstallation, l'installation silencieuse par domain deployment, ...).
    >>Cela semble signifier qu'il faut installer VC2005 sur l'autre poste.

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Citation Envoyé par deubelte Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Faire un projet d'installeur (.msi) (sous VStudio c'est assez simple) qui groupe ta DLL et le redistributable runtime.
    >>C'est possible avec VCExpress2005?
    Pas sûr. Regarde si tu peut faire des projets de Déploiement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3. Utiliser l'installeur sur les machines cibles (qui offre au passage la désinstallation, l'installation silencieuse par domain deployment, ...).
    >>Cela semble signifier qu'il faut installer VC2005 sur l'autre poste.
    Non. C'est juste utiliser le programme d'installation qui aura été créé par Visual 2005.

    Si cette solution ne marche pas, il faudra se tourner vers la seconde.
    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.

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Non ça n'existe pas avec la version express.

    Recherche 'vcredist' dans le forum et tu trouveras sans doute des informations utiles.

    MAT.

Discussions similaires

  1. probleme debug dll => http 500
    Par pram dans le forum XMLRAD
    Réponses: 3
    Dernier message: 20/06/2006, 11h01
  2. Problème de dll
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 23/04/2006, 22h19
  3. Probleme sur DLL & VCL
    Par Romain² dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2006, 18h10
  4. Probleme: recompilation DLL en VB6 impossible
    Par balibo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 04/11/2005, 10h16
  5. [CR] Probleme avec Dll P2oledb.dll
    Par malban dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/08/2004, 09h10

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