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 C++ Discussion :

Charger un exe comme une dll


Sujet :

Langage C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Par défaut Charger un exe comme une dll
    Bonjour à tous,

    J'essaye d'exposer quelques méthodes C a travers un fichier exécutable qui contient son main.

    Donc le comportement que je cherche à avoir, c'est un .exe standalone qui peut être lancé tel quel ou chargé comme si c’était une dll.

    Si je compile mon projet comme une dll, tout va bien, je fais mon loadlibrary et mon getprocadress sans soucis. Par contre en tant qu'exe, ça ne passe plus, tout à l'air de fonctionner (le load et le getprocadress), mais ça crache des l'entrée dans la fonction).

    Je me suis laissé dire qu'il y avait une histoire de dllmain ou d'entrypoint, mais je ne sais pas bien ce que ça implique pour moi. Si quelqu'un a déjà fait ça par le passé, la solution m’intéresse bcp.

    Merci

    (si vraiment je n'y arrive pas je ferai une dll et un exe, mais l'exercice m'intéresse )

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par atapi Voir le message
    Je me suis laissé dire qu'il y avait une histoire de dllmain ou d'entrypoint, mais je ne sais pas bien ce que ça implique pour moi. Si quelqu'un a déjà fait ça par le passé, la solution m’intéresse bcp.
    C'est effectivement peut être une piste (mais je ne sais pas t'aider sur ce point).

    Une autre piste, les conventions d'appel qui peuvent expliquer un crash lors de l'appel. Ici, une présentation des ces conventions.

    Il faut que l'appelant appelle l'appelé de la bonne manière (en passant les paramètres dans le bon ordre et tout et tout). C'est à cela que servent ces conventions d'appel.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Par défaut
    J'ai essayé __cdecl et WINAPI(__stdcall), mais ça ne donne rien, je suis sur que ca c'est bon, puisqu'avec le même programme test, quand je load la dll ça marche et quand je load l'exe, ca pète.

    Maintenant, je suis juste sur que c'est la meme convention de chaque côté, je ne sais pas s'il y a un convention particulière à prendre dans mon cas.

    Enfin, merci pour ta réponse.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Visiblement, ce n'est pas qu'un problème de convention d'appel, la structure du binaire compte aussi.

    Regarde ici, il y a un exemple de ce que tu veux faire.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Par défaut
    Je suis justement en train de regarder, je suis un peu un bille en anglais, mais si je comprends bien, ici c'est plus réutiliser un exe comme dll, avec la modif qu'il faut. Je voudrais garder le comportement des deux intacts.

    Enfin, je vais creuser la dedans. merci bcp en tout cas

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ce qui est fait dans l'exemple :
    • Il a un exe standalone avec une fonction main() qui appelle la fonction decode().
    • Dans un autre exe, il load le 1er exe pour utiliser la fonction decode().

    Il me semble que c'est ce que tu veux faire (ou alors j'ai pas compris ta demande)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Par défaut
    si si, c'est exactement ça, mais j'avais pas bien compris ce qu'il faisait, un grand merci, je vais essayer ça des que possible.

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/03/2007, 11h28
  2. Réponses: 5
    Dernier message: 15/06/2006, 12h03
  3. Réponses: 5
    Dernier message: 14/05/2006, 12h57
  4. Comment charger un TFrame depuis une dll ?
    Par Millenod dans le forum Langage
    Réponses: 29
    Dernier message: 22/12/2004, 14h48

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