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

Langage Delphi Discussion :

Embarquer une dll dans le .exe


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut Embarquer une dll dans le .exe
    Bonjour à tous,
    je débute avec Delphi et j'écris une petite application qui nécessite une dll; cependant je voudrais que ma dll soit embarquée à mon .exe . En outre je ne voudrais pas quelle soit extraite au lancement de l'application avant qu'on puisse utiliser ses méthodes ; j'ai vu des codes sur le site mais on opérait toujours l'extraction . Toute aide est la bienvenue car je me suis déjà et merci d'avance.

    Emmanuel !!!
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 086
    Par défaut

    Utiliser une fonction d'une DLL sans l'extraire
    lancer un exe depuis un TMemoryStream

    si tu ne veux pas faire une extraction fichier (même dans un répertoire temporaire), tu peux charger la ressource en mémoire et déclarer la zone mémoire comme exécutable (MadCodeHook doit savoir faire ça) avec tout le tralala VirtualProtect PAGE_EXECUTE_READWRITE, WriteProcessMemory ... on sera ravi de voir le code que tu produiras à ce sujet

    Comment insérer une ressource dans un exécutable ?
    Tu utilises le TResourceStream que tu utilises ensuite MemoryLoadLibrary et MemoryGetProcAddress proposé dans Loading a DLL from memory

    Faudrait savoir comment c'est gérer avec les BPL, ce sont des DLL sauce Borland
    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

  3. #3
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Ok ShaiLeTroll merci, je vais suivre la piste que tu me proposes et te tenir informé; et je n'oublirai pas de le marquer comme résolu !
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Resalutation ShaiLeTroll, mon application marche comme je voulais à présent ; tes liens m'ont vraiment aidé, tu es vraiment un "Master" Sénior . Je vais essayer de le perfectionner un peu. Bonne soirée!

    Emmanuel.
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Salut à tous,
    je tire un coup de chapeau particulier à ShaiLeTroll , dans la suite de mon programme je cherche à intergrer une dll ayant des dépendances avec d'autres. La difficulté que je rencontre est la détection de ses dépendances et l'utilisation de ma méthode dans la dll aproprié. J'utilise à cet éffet le fichier "BTMemoryModule.pas" que certainement vous avez déjà rencontrer; voici un aperçu de ce que j'écris pour mettre toute mes dll en mémoire afin de résoudre les dépendances et qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        RS := TResourceStream.Create(hInstance, 'MifareSN', RT_RCDATA);
        RS1:= TResourceStream.Create(hInstance, 'borlndmm', RT_RCDATA);
        RS2:= TResourceStream.Create(hInstance, 'function', RT_RCDATA);
        RS3:= TResourceStream.Create(hInstance, 'USB', RT_RCDATA);
     
        MS := TMemoryStream.Create;
     
        Try
     
          MS.LoadFromStream(RS1);
          MS.LoadFromStream(RS2);
          MS.LoadFromStream(RS3);
     
          MS.LoadFromStream(RS);
     
          MS.Position := 0;
          //M_DllDataSize := MS.Size;
          M_DllDataSize    := RS.Size;
          MP_DllData := GetMemory(M_DllDataSize);
          MS.Read(MP_DllData^, M_DllDataSize);
     
        Finally
          MS.Free;
    Par la suite j'écris ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BtMM := BTMemoryLoadLibary(MP_DllData, M_DllDataSize);
      Try
        If BtMM = Nil Then Abort;
        @GetCardSN_func := BTMemoryGetProcAddress(btMM, 'GetCardSN');
        If @GetCardSN_func = Nil Then Abort;
        Self.Edit1.Text := GetCardSN_func;
      Except
    avec cette déclaration un peu plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    type
      GetCardSN = function() : PAnsiChar; stdcall;
    var
      Form1: TForm1;
      GetCardSN_func  : GetCardSN;
    Merci d'avance pour toute aide qui serait la bienvenue
    Emmanuel
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Dialog MFC d'une dll dans un exe non MFC
    Par auwel dans le forum MFC
    Réponses: 3
    Dernier message: 06/03/2009, 20h23
  2. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/11/2005, 12h10
  3. Intégrer une dll dans un EXE
    Par Akim13 dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 02h11
  4. Inclusion d'une DLL dans un exe?
    Par luareon22 dans le forum MFC
    Réponses: 10
    Dernier message: 29/08/2005, 12h08
  5. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00

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