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

Visual C++ Discussion :

comment raccrocher une dll ?


Sujet :

Visual C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut comment raccrocher une dll ?
    Voilà ce qui m'amène...
    J'ai importé mes fichiers dans Visual C++ (je les ai développés dans C::B avant de laisser tomber, n'y comprenant rien aux multiples options-réglages-configurations de la bête).
    J'ai compilé, sans trop de difficulté, puis généré, avec un peu plus de souci mais on n'a rien sans rien, n'est-ce pas ?
    Et voilà t'il pas que monsieur refuse de s'exécuter sous prétexte qu'il ne trouve pas "wxms291ud_core_vc_custom.dll". Je trouve ça particulièrement injuste, voire même diffamatoire parceque ledit "wxms291ud_core_vc_custom.dll" se trouve dans mon répertoire "c:\Visual Studio\wxWidgets-2.9.1\lib\vc_dll"
    J'ai déjà truffé ma config de $(WXWIN)\truc et $(WXWIN)\machin : que lui faut il de plus
    Où dois-je déclarer les dll appelées par le programme lors de son exécution ?

    Merci par avance à mon futur sauveur.

    PS : j'ai jeté un oeil dans la FAQ mais je n'ai point trouvé de quoi me consoler.

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bon, ben je vais me créditer une bonne réponse.
    En fait, je n'ai pas trouvé la solution en DLL et j'ai tout passé en statique. Et là, hop, ça marche pile-poil.
    Je suis mon propre sauveur mais c'est dommage, j'aurais bien aimé comprendre.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 157
    Points : 12 271
    Points
    12 271
    Par défaut
    Il semble qu'il vous manque quelques notions de base des dll.

    Une dll est une librairie qui est partagée par plusieurs programmes.
    Ce n'est pas de la responsabilité du compilateur ni de l'éditeur de lien d'indiquer où elle se trouve dans le système (à part, indirectement avec la notion de version et de Side by Side (SxS) mais c'est une technique "advanced"). Et encore heureux, car cet endroit varie énormément d'un OS à un autre.

    Vous ne trouverez donc aucune option dans VS pour la configuration du chargement des dll.
    L'éditeur de lien ne fait que donner les points d'entrées (symboles) utilisés dans une dll en ne spécifiant que son nom (de la dll), en aucun cas un éventuel chemin.

    C'est le chargeur de l'OS qui déterminer où chercher les dll, lors de l'exécution du programme.

    Dans votre cas, le plus simple et de modifier votre variable d'environnement PATH pour que le charger utilise le répertoire "c:\Visual Studio\wxWidgets-2.9.1\lib\vc_dll" lors du chargement de votre programme en mémoire. De manière plus standard, il serait préférable de mettre une copie de cette dll à coté de l'exécutable, car, par défaut, le charger de l'OS commence par le répertoire de travail du programme puis le répertoire contenant le fichier "image" de l’exécutable.

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup, c'est très clair et très instructif. Une dernière question si je peux me permettre. Quand doit on utiliser multithreaded dll plutôt que multithreaded?
    Merci par avance

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 157
    Points : 12 271
    Points
    12 271
    Par défaut
    C'est un peu complexe mais en général, c'est toujours la multithread dll sauf quand des boulets ont eu la riche idée d'utiliser une autre C-Runtime et de faire partager leur superbe trait de génie , en n'isolant pas les mécanismes d'allocation et de désallocation de leurs objets dans leur API de dll, dans leur dll.

    Généralement ces deux boulettes vont de pair.

    Donc sauf cas très très particulier, c'est multithread dll.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci, c'est clair et ça m'évitera les tâtonnements habituels.
    Les 3 avantages que je trouve à VC par rapport à C::B-GCC:
    - une configuration beaucoup plus accessible à un non spécialiste
    - un débugueur nettement plus puissant
    - des réponses claires et rapides sur je forum

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/10/2005, 13h01
  2. Comment accéder à une DLL COM depuis un exécutable ?
    Par Denys dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 20/09/2005, 08h04
  3. Comment exécuter une DLL ?
    Par chleuh dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 14h27
  4. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38

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