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 :

Suppression de la décoration


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut Suppression de la décoration
    Bonjour,

    Je viens de créer une dll afin d'exporter des fonctions du C++ vers le VBA et j'aimerais modifier la décoration de celles-ci. D'après le tutoriel que je suis, je dois créer un fichier d'exportation .def, et je ne vois pas où ni comment je dois le faire. Quelqu'un pourrait-il me venir en aide ?

    Merci

  2. #2
    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
    Le problème, c'est que tu dois connaitre la décoration pour la supprimer.
    • Avec la décoration C++, aucune chance.
    • En déclarant ET définissant la fonction C++ extern "C" pour qu'elle ait la décoration C au lieu de C++, tu peux connaitre la décoration assez facilement (comme les fonctions doivent être en __stdcall pour être utilisables par VB, la décoration aura la forme _MaFonction@X où X sera la taille des paramètres).
    Voir sur MSDN pour trouver la syntaxe du fichier .def (Notamment, il y aura des mots-clé comme LIBRARY et EXPORTS)
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    J'ai déjà le nom de la fonction (j'utilise pour cela Dependency walker). Ce que je voudrais savoir c'est où et comment créer cette fonction .def qui me permette de la modifier.

  4. #4
    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
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    Je n'y arrive toujours pas. On me dit d'ajouter le fichier .def au projet parallèlement aux autres fichiers mais je ne vois pas comment faire, comment l'ajouter. Est-ce que c'est une commande à taper quelque part ou bien un fichier à créer ?

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Salut.

    Le fichier .def est un fichier que tu dois créer. C'est comme un fichier texte avec l'extension .def au lieu de .txt.

    Dedans tu vas mettre le nom des fonctions que tu exportes avec en premier le mot clé "EXPORTS". (voir le lien donné par médinoc ou directement ici -> http://msdn2.microsoft.com/en-us/lib...d3(VS.80).aspx ).

    Ensuite dans visual c++ express:

    Projet->Propriétés->Propriétés de configuration->Editeurs de liens->Entrée->Fichier de définition de module.

    Tu mets le nom de ton fichier .def, qui doit se trouvait dans le répertoire du projet.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Bonjour,

    Tu peux aussi utiliser ce pragma

    #pragma comment(linker, "-export:nom_externe=nom_interne")
    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
     
    extern "C"
    {
        #pragma comment(linker, "-export:mafonctionA=_mafonctionA@4")
        int __stdcall mafonctionA(int i)
        {
            return 0;
        }
    }
     
    #pragma comment(linker, "-export:mafonctionB=?mafonctionB@@YGHH@Z")
    int __stdcall mafonctionB(int i)
    {
        return 0;
    }
    Passo

Discussions similaires

  1. Annuler une suppression
    Par Harbaingan dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/04/2003, 14h59
  2. [DOM] suppression d'un noeud fils xml en JAVA
    Par alexandre54 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 20/03/2003, 09h44
  3. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 17h56
  4. [CR] suppression du bas de page
    Par grosjej dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 10/09/2002, 08h58
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

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