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 :

indexer uen fonction d'un DLL


Sujet :

C++

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut indexer uen fonction d'un DLL
    Bonjour, je voudrais savoir comment on peut indexer une fonction dans une dll. j'utilise un dll c++ dans un programme delphi. j'arrive à trouver les index généré automatiquement mais ils changent d'une machine à l'autre alors je ne peux pas utiliser cette méthode.

    voila une fonction se trouvant dans le ddl que je voudrais indexé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DllExport BOOL  APIENTRY CapiStart(int lines);
    et la fonction que j'utilise sur delphi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function CapiStart(lines:Integer): boolean; stdcall; external cDLL index 13;
    je voudrais pouvoir l'utiliser sans l'index:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function CapiStart(lines:Integer): boolean; stdcall; external cDLL;
    mais il me dit qu'il ne trouve pas la fonction CapiStart dans le dll.
    puis je indexé la fonction ou faire en sorte que la fonction soit retrouver?

  2. #2
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LIBRARY NomDeVotreDLL
    EXPORTS
    function
    Dans un fichier .def portant le nom de la DLL. Enfin je pense que c'est ce que tu veux, ou alors je n'ai pas compris ce que tu voulais dire par indexer.

    [edit] function étant le nom de la fonction dans la dll, si tu as plusieurs fonction ajoute leur nom à la ligne[/edit]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut
    je veux faire en sorte de pouvoir utiliser mes fonctions par leur nom dans mon programme delphi.
    je vois pas ce que je doit faire du fichier .def

    j'ai oublié de préciser que j'avais déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define DllExport    __declspec( dllexport )

  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
    Par défaut
    1. Dans un source C++, la fonction doit être déclarée en extern "C" pour être exportée avec un nom potable.
    2. Une fois en extern "C", ta fonction aura pour nom _CapiStart@4 parce qu'elle est en __stdcall. Je ne connais pas Delphi, donc je ne sais pas si Delphi compense automatiquement ou non...
    3. Avec un fichier .def, tu peux forcer le nom sous lequel la fonction sera exportée, ce qu'un simple __declspec(dllexport) ne permet pas.
    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
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut
    j'ai aussi le extern C, _CapiStart@4 ca ne passe effectivement pas sous delphi.
    mais comme dit précédement je ne sais pas quoi faire de votre .def, il sert à quoi, à compiler? je doit le mettre où et dois je l'indiqué au compilateur ?
    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut
    ok merci beaucoup, il fallait indiquerl e fichier au linker tout marche nickel, merci alceste

  7. #7
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Mais de rien

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

Discussions similaires

  1. Appel de fonction d'une DLL en TANSAC SQL
    Par sylvain114d dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 10h21
  2. Réponses: 5
    Dernier message: 11/02/2005, 16h52
  3. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  4. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57
  5. [VB6] Ajouter un commentaire à une fonction d'une DLL
    Par Ace303 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2003, 08h14

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