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

 Delphi Discussion :

Choix d'une adresse Image base pour les DLL


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut Choix d'une adresse Image base pour les DLL
    Bonjour à tous et toutes,

    J'ai toujours un petit problème de choix de l'adresse 'Image Base' pour les applications chargeant et utilisant des DLL...

    J'ai en effet lu quelque part que si cette adresse n'est pas changée, il y aura à coup sûr une relocation de / des DLL chargée(s) par l'application principale car l'adresse par défaut: 0400000 sera toujours indisponible... OK

    J'ai donc pris l'habitude dans ces cas là de modifier cette adresse... Or ce que je ne comprends pas trop c'est s'il faut la modifier de la même façon à la fois dans les options de l'application principale ET dans les options de la DLL ou si une seule modification (dans les options de la DLL qui sera appelée par exemple) suffit ???

    Merci pour vos réponses et bonne continuation.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    alors ça c'est bien une option à laquelle je n'a jamais touché

    je dirais que si tu veux jouer avec cela...tu lances ton appli, tu regardes à quelle adresse est réellement chargée la DLL et tu modifies alors son adresse de base en conséquence....mais l'intérêt me semble très limité.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    alors ça c'est bien une option à laquelle je n'a jamais touché
    Idem, et pourtant, je maintiens en ce moment un projet composé de 40 exe et plus de 100 DLL que l'on a écrit (chargé dynamiquement) et plus de 20 (fourni par tiers, ce nombre augmente avec les SDK d'appareil que j'intègre en ce moment même) souvent lié en par un LIB (C++)

    J'ai eu avec C++Builder 2007 un gros soucis sur une DLL et CodeGuard où une DLL B réutilisait l'adresse mémoire de la DLL A précédemment libéré faisant délirer CG !
    HInstance prend justement la valeur de 0x00400000, je viens à peine découvrir cela, au bout de 12 ans de Delphi et 2 de C++Builder
    C'est bien une valeur que je ne regardais jamais pourtant indispensable pour les ResourceStream ou encore en paramètre de GetModuleFileName pour récupérer le nom de la DLL (utile pour associer un ini portant le même nom par exemple)

    Comme Paul, c'est bien un truc que tant que cela fonctionne pourquoi prendre le risque d'y toucher surtout lorsque l'on ne maîtrise pas les conséquences !

    Citation Envoyé par zano972 Voir le message
    Or ce que je ne comprends pas trop c'est s'il faut la modifier de la même façon à la fois dans les options de l'application principale ET dans les options de la DLL ou si une seule modification (dans les options de la DLL qui sera appelée par exemple) suffit ???
    Dans la DLL, je visualise l'option pour la DLL elle même
    Dans la EXE, je visualise l'option pour l'EXE lui même

    Mais dans l'EXE ou même les DLL appellantes, il n'y a nulle part un truc pour associer une Adresse à une DLL utilisée !
    Tu imagines si il fallait gérer partout les valeurs d'adressage dans tous les projets interdépendant, en plus qui te dit que tu ne vas pas choisir l'adresse qu'une autre DLL va choisir (donc relogement)

    As-tu déjà regardé le journal d'évènement ? Tu as presque 100 DLL qui se lance, celle de l'OS, celle du Shell, celle ajouté au Shell, les BPL + celle utilisées par les BPL, ...)

    Ne te prends pas la tête avec cela !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    RE,

    OK les braves Merci pour les réponses je crois que c'est surtout les remarques de ShaiLeTroll qui ont fini par me convaincre avec son:

    Ne te prends pas la tête avec cela !
    Là desus t'as parfaitement raison... Et j'ai même déjà oublié qu'un jour je me suis posé la question !

    Bonne continuation et A+++

    Résolu pour ma part.

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

Discussions similaires

  1. [MySQL] Filtrer les données issues d'une base pour les afficher
    Par fxzone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/05/2012, 08h43
  2. Création d'une classe de base pour les ChildWindow
    Par Mozofeuk dans le forum Silverlight
    Réponses: 4
    Dernier message: 15/11/2011, 14h42
  3. Réponses: 6
    Dernier message: 24/06/2010, 17h45
  4. Réponses: 4
    Dernier message: 29/09/2006, 11h53
  5. Réponses: 7
    Dernier message: 04/06/2006, 12h24

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