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

XMLRAD Discussion :

Dialogue DLL externe


Sujet :

XMLRAD

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut Dialogue DLL externe
    Petit pb ...

    Je voudrais faire appel à des fonctions d'une dll maison à l'intérieur de mon appli xmlrad.

    J'ai intégré le code suivant dans implementation :
    procedure FctDll; stdcall; external 'madll.dll' name 'FctDll';
    Puis, dans mon code :
    MaVariable := FctDll;
    (fctDll renvoie une chaine de caractères)

    Le pb :
    - mon appli n'arrive pas à atteindre le DLL
    Violation d'accès à l'adresse 01C43305 dans le module 'MaDll.dll'. Lecture de l'adresse 00000318
    - si j'essaie d'initialiser la Dll à l'intérieur de mon appli, elle est créée dans le process inetinfo et ne marche pas ...

    Quelqu'un aurait-il une idée ??? (ou alors, ce n'est peut-être pas possible ???)

    Merci

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    c'est totalement possible sauf que:
    procedure FctDll; stdcall; external 'madll.dll' name 'FctDll';
    tu déclares une procedure
    MaVariable := FctDll;
    tu l'appelles comme une fonction
    et tu dis qu'elle renvoie une chaine de caractère (j'espere que c'est pas le type string...
    bref si tu pouvais nous donner le code exacte, on pourrait sans doute identifier de facon plus précise le problème [/quote]

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Si, c'est bien du string ....

    En fait, voilà le code exact :

    Dans implementation :
    function GetName(uid : shortstring):shortstring;stdcall;external 'LpLdap.dll' name 'GetName';

    Dans le code :
    var
    MaVariable : String;
    begin
    MaVariable := GetName('User');
    end;

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ah bon je préfère cette déclaration la. (ShortString)
    mais dans la DLL comment est-ce déclaré ?

    la fonction est elle bien aussi déclarée en stdcall ?

    d'après ce que je vois il n'y a pas de raison pour que ca ne fonctionne pas. sauf erreur de déclaration et de convention d'appel.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Voici le code de la déclaration dans la dll en question :

    function GetName(uid : shortstring):ShortString;stdcall;

    .....

    P.S. : cette DLL lance une IHM (systray) ... cela ne serait-il pas un pb ?????

  6. #6
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    c'est possible...
    est-ce que tu arrives à debuger la DLL ? est-ce que tuarrives a savoir quelle est la ligne qui pete une AV dans la dll ?

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Je n'ai pas la main pour debugger la DLL. Le développeur a fait des modifs, et on avance un peu...

    Merci quand même.

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Re suite ...

    En fait, l'appel à la DLL se fait bien avec une petite appli Delphi 'classique'.

    Le pb ne se pose qu'avec la DLL ISAPI. j'ai fait 2 tests :

    - la DLL n'est pas lancée : L'appel à une fct de la DLL la fait se charger en mémoire mais à priori dans le process inetinfo

    - la DLL est déjà lancée : c'est pareil que le cas précédent, la DLL est à nouveau lancée dans inetinfo..

    En fait, la DLL renvoie bien un résultat, donc bien lancée, mais comme il se trouve qu'à l'intérieur on lance une JVM, je me demande à quel point inetinfo peut le supporter ....

  9. #9
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ouch !
    ah oui c'est pas gagné cela !
    comme on est en processus bas, au niveau de la protection de l'application, toutes les DLL ISAPI sont chargé sous le controle du processus inetinfo.exe et donc les DLL chargés par l'ISAPI aussi !

    Par exemple j'ai remarqué que pour une ISAPI la taille de la pile est limité par IIS et donc moins importante que une appli classique windows. cela peut entrainer une av.

Discussions similaires

  1. Accés à une dll externe
    Par syrio dans le forum C++
    Réponses: 5
    Dernier message: 08/04/2006, 00h23
  2. JNI/DLL - Extern C : Généralisation ?
    Par ni0urk dans le forum MFC
    Réponses: 1
    Dernier message: 19/01/2006, 09h27
  3. Appel aux fonctions d'une DLL externe ??
    Par Fbartolo dans le forum Access
    Réponses: 7
    Dernier message: 21/11/2005, 18h54
  4. dll ActiveX utilisant une DLL externe
    Par Metal3d dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/11/2005, 19h02
  5. [Jonas]Ajout de dll externes
    Par romainp22 dans le forum JOnAS
    Réponses: 8
    Dernier message: 14/01/2005, 12h41

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