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 :

créer un wrapper pour une DLL écrite en C++ sans avoir accès au code source


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 28
    Par défaut créer un wrapper pour une DLL écrite en C++ sans avoir accès au code source
    Bonjour,

    Je dispose d'une DLL écrite en C++ et je souhaiterais créer un wrapper C de celle-ci.
    Je dispose du fichier .h et du fichier .dll mais je n'ai pas accès au code source (.cpp).

    Est-ce qu'il est possible de créer un wrapper sans le code source ? Si oui, pouvez-vous m'indiquer les démarches à suivre ou si un tutoriel existe je veux bien que vous le partagiez s'il vous plaît ?

    Je vous remercie par avance pour votre aide.

    Bien cordialement.

    Karen

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Salut!

    Pour wrapper une DLL, il faut que tu saches:
    1) Les fonctions qu'elle exporte (faisable en utilisant Dependency Walker, ou en ayant le .h que tu dis avoir)
    2) Les fonctions dont tu as besoin parmi ces fonctions.

    Et donc oui, c'est faisable sans avoir le code source.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Il faut aussi avoir le même compilateur, les mêmes versions des librairies et des templates et les mêmes options de compilation utilisés pour compiler un wrapper de Dll.

    C'est tellement con de faire une Dll en C++ qui n'exporte pas une API utilisable en C que je penche pour de l'amateurisme complet.

    Oui, c'est faisable, mais il y a tellement de choses qui peuvent partir en sucette que ...

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 28
    Par défaut
    Merci pour vos réponses.

    Donc oui je dispose du .h, je peux avoir accès à tous les prototypes présents dans la DLL et je peux donc faire un tri des fonctions que j'ai besoin.

    Pour vous mettre dans le contexte on m'a fourni un dossier avec plusieurs fichiers (.dll, .h et .lib), cette DLL est compilée en C++.
    J'ai besoin de l'importer sous LabVIEW et pour cela on m'a conseillé de créer un wrapper afin de faire le lien avec LabVIEW, notamment dans le cas de l'utilisation de types de données spécifiques au C++.

    Malheureusement je n'ai pas accès au code source pour l'instant, vous m'avez dit qu'il était possible de créer un wrapper sans le code source donc pouvez-vous m'en dire plus s'il vous plait ?

    Je vous remercie par avance.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Cf. la réponse de Bacelar: Si la DLL utilise le moindre type de la STL dans son interface publique, alors tu auras besoin de savoir exactement quel compilo a été utilisé (à la version près!) et utiliser exactement le même, sans quoi c'est peine perdue.

    Si la DLL n'emploie que des types primitifs dans son interface par contre, tu as une chance.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 28
    Par défaut
    Si j'ai bien compris j'ai peu de chance de réussir.

    Y a t'il un moyen rapide pour savoir si la DLL utilise un certain type de la STL dans son interface publique?

    Je suis encore une débutante donc excusez-moi si c'est une question élémentaire.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/06/2005, 21h45
  2. Créer un index pour une Base de données
    Par john7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/01/2005, 21h43
  3. result: chaine de caractère pour une DLL
    Par Sephiroth Lune dans le forum Langage
    Réponses: 7
    Dernier message: 27/07/2004, 23h05
  4. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  5. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07

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