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 update recompilation nécéssaire ?


Sujet :

C++

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut dll update recompilation nécéssaire ?
    Bonjour,

    Admettons que l'on vienne modifier le code d'une dll utilisé par un .exe
    Je me demandais comment le .exe référencer les fonctions ou classe de la .dll..
    Est ce une table en début de dll répertoriant les adresses de début du code des différentes fonctions , permettant ainsi à une fonction d'être modifié (disons son code pas sa signature), tout en garantissant que "le point d'entré" vers cette fonction depuis le .exe reste inchangé , où si au contraire une recompilation du .exe est indispensable

    Désolé si pas clair ou phrase longue

    Merci.

    j'aurais tendance à penser que non ne serait-ce que de part l'existence de système de e plug in etc, mais j'aimerais en avoir confirmation et/ou précision etc, notamment en terme d'ABI

  2. #2
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    99% de la réponse est là
    http://www.codeproject.com/KB/cpp/ho...MatureApproach

    je laisse le thread ouvert ou cas où certain verrais un commentaire pertinent à faire

    Typiquement j'ai du mal à comprendre précisément le problème engendré par l’utilisation de plusieurs version de la CRT

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Tant que tu ne fais que changer le code du corps des fonctions, mais que tu garde le même compilateur et les mêmes signatures (ou que tu rajoute de nouvelles fonctions), tu n'aura aucun problème, hormis le fait éventuel que ton "ancien" exécutable n'utilisera pas les "nouvelles" fonctions.

    La localisation des adresses auxquelles commencent les différentes fonctions se fait, en effet, de manière dynamique, en fonction de l'endroit en mémoire où la dll sera effectivement chargée.

    Par contre, il faut savoir que, contrairement à ce qui se fait en C, il n'existe (pour l'instant du moins) ni ABI ni convention d'appel, ni mangling convention (je ne connais pas encore de traduction satisfaisante pour ce terme, mais c'est la convention qui permet d'identifier de manière unique et non ambigüe une fonction particulière parmi ses éventuelles surcharges et / ou parmi les différentes portées ) standard en C++.

    On ne peut donc apporter aucune certitude quant au fait que deux compilateurs différents respecteront les mêmes conventions, même lorsqu'ils créent des exécutables pour une même cible.

    Mais cela va encore plus loin: il n'y a aucune garantie quant au fait qu'une version donnée d'un compilateur utilisera les même conventions que sa version précédente ou que sa version suivante

    Ce n'est donc pas à proprement parler un problème de CRT (Common Run Time) utilisée, mais plus un problème lié aux symboles utilisés pour représenter et / ou rechercher les différentes fonctions
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Merci pour ta réponse, cependant un doute subsiste ...

    Quel problème peut se poser si mon .exe utilise une version statique de la CRT ou une version1 et qu'une dll utilisé par mon .exe utilise une version dynamique de la CRT ou une version 2 ?

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176

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

Discussions similaires

  1. recompillation d'un dll en C++ vers CF
    Par otherside dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 13/01/2009, 01h40
  2. Recompiler DLL Win32 en .NET
    Par Jognu dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 22/09/2008, 15h31
  3. 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
  4. Recompiler une librairie dynamique (DLL) en statique
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 07/04/2005, 19h28
  5. [xmlrad] recompilation dll
    Par Pm dans le forum XMLRAD
    Réponses: 3
    Dernier message: 14/01/2003, 13h43

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