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

VB 6 et antérieur Discussion :

Inline, pointeur et dll ..


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Points : 70
    Points
    70
    Par défaut Inline, pointeur et dll ..
    Bonjour ou bonsoir,

    J'ai un soucis.
    J'ai créé une dll en c dans laquelle j'exporte des fonctions que j'utilise dans un programme vb6. Jusque là, tout est ok.
    Une des fonctions est appelée très souvent. Mais les appels de fonctions de dll externes est très long, trop long.

    Je pensais à :
    - charger la dll dans mon programme vb6 et récupérer l’adresse de la fonction
    - faire un appel direct(call XXXXXX) à cette adresse quand j'en ai l'utilité
    Pour la première partie, je pensais à créer une seconde fonction qui retourne l'adresse de la fonction désirée.
    Pour la deuxième partie, je pensais à faire de l'inline en mettant du code assembleur. Mais je ne sais pas si c'est possible, je ne sais pas si vb6 ne fait pas tout un florilège de test avant d’exécuté le inline..

    Je pensais également à inclure la dll dans l'IAT du programme, créer du code qui sert à rien(que j'appel à la place de la fonction désirée), patcher ce code qui sert à rien pour appeler la fonction. Mais ça m'ennuie de faire ça car :
    -j'ai pas envie d'automatiser ça, ça m'ennuie rien que d'y penser
    -et faire ça à la main m'oblige à ne plus faire de mise à jour de mon programme, ça m'ennuie rien que d'y penser

    J'aimerais savoir si vous avez une idée pour appeler ma fonction plus rapidement.

    Un tout grand merci.

    Bien à vous,
    Moi.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour zizoufoot

    Tes fonctions exportees en C sont peut etre prefixes avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     extern "C"  _cdecl(export) double myFunc1(int a,douible b)
    {
       // code
    }
     extern "C"  _cdecl(export)  int  myFunc2(int x)
    {
       // code
    }
    et un fichier .h subsequent avec ses macros _cdecl...

    L'appel par _cdecl(export) et un fichier .h est long car la recherche des fonctions se fait par leur nom...
    Une autre methode:
    - supprmer tes fonctions du fichier .h...
    - supprimer les directives extern "C" _cdecl(export) dans le fichier .cpp devant les declarations de fonctions....
    - creer un fichier YourLib.def dans le meme dossier que le fichie YourLib.cpp
    avec des ordinaux devant les noms de fonctions(numero de 1..à n)
    Les ordinaux accelerent la recherche de la fonction lors de l'appel de fonction....
    contenu du fichier nouveau fichier .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     double myFunc1(int a,douible b)
    {
       // code
    }
     int  myFunc2(int x)
    {
       // code
    }
    contenu du fichier fichier .def:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     LIBRARY	"YourLib"
     EXPORTS
     myFunc1   @1
     myFunc2   @2
    nb:ne pas inclure ce fichier dans le fichier .cpp....
    En esperant que cela reponde au souci.....................
    bon code ....

Discussions similaires

  1. Problème utilisation de pointeur avec dll
    Par Xarik dans le forum C#
    Réponses: 4
    Dernier message: 05/08/2011, 20h37
  2. passage de pointeurs entre appli delphi et DLL c++
    Par e-teo dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 21h46
  3. [DLL] Pointeurs
    Par Pedro dans le forum Langage
    Réponses: 5
    Dernier message: 06/09/2005, 09h44
  4. Question de pointeur entre un programme et une DLL
    Par Neilos dans le forum C++Builder
    Réponses: 12
    Dernier message: 01/02/2005, 19h12
  5. Multithread, pointeur et dll
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2004, 14h37

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