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

Lazarus Pascal Discussion :

[64 bits] Chargement dynamique d'une DLL 32 bits [Lazarus]


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Par défaut [64 bits] Chargement dynamique d'une DLL 32 bits
    Bonjour,
    Je suis en Windows 10 (64 bits), Lazarus 1.8.4 et 2.0, FPC 3.0.4.
    Je teste actuellement Lazarus et je désire charger dynamiquement une DLL comme je le fais habituellement en Delphi 7.
    Problème :
    LoadLibrary ou SafeLoadLibrary me renvoient toujours 0
    Explo_dp.dll est une DLL écrite en Delphi
    ZipDll.dll est une DLL trouvé sur Internet pour tester

    Mes différents tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Var
    Handle : : THandle; // ou integer ou TLibHandle 
     
    Handle:= Windows.LoadLibrary('Explo_dp.dll'); 
    // ou 
    FICHIER:=REPERTOIRE_APPLI(TRUE)+'Explo_dp.dll';
    Handle:= Windows.LoadLibrary(PCHAR(FICHIER));
    // ou
    Handle:= dynlibs.LoadLibrary('ZipDll.dll');
    // ou 
    Handle:=SafeLoadLibrary('ZipDll.dll');
    Exemple de code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     PROG_LNK, // Créer un raccourci
     PROG_MODIF_LNK : PROCEDURE(INFO : PCHAR);
     
    {$IFDEF Windows}
    FUNCTION TForm1.CHARGE_DLL : BOOLEAN;
      VAR
        FICHIER : STRING;
        HANDLE_EXPLO_DP_DLL : THandle;
          BEGIN
            RESULT :=FALSE;
            FICHIER:=PROC2.REPERTOIRE_APPLI(TRUE)+'Explo_dp.dll'; // 'ZipDll.dll'
            HANDLE_EXPLO_DP_DLL := Windows.LoadLibrary(PCHAR(FICHIER));// Toujours 0 ???????
            if HANDLE_EXPLO_DP_DLL <> 0 then
               begin
                  Pointer(PROG_LNK):=Windows.GetProcAddress(HANDLE_EXPLO_DP_DLL, 'CREER_LNK');
                  Pointer(PROG_MODIF_LNK) := Windows.GetProcAddress(HANDLE_EXPLO_DP_DLL, 'MODIF_LNK');
                  RESULT:=TRUE;
               END
             ELSE
               BEGIN
                  Showmessage('Il manque le fichier : '+FICHIER);
               END;
          END;
           {$ENDIF}

    Qui peut m'aider ?
    1) Pourquoi toujours 0
    2) Différences entre :
    Windows.LoadLibrary
    dynlibs.LoadLibrary
    SafeLoadLibrary

    Remarque :

    Explo_dp.dll contient entre autre :
    CREER_LNK : pour créer un fichier LNK et en paramètre le répertoire de destination
    MODIF_LNK : pour modifier un fichier LNK et en paramètre le nom du fichier LNK

    Ci-joint le fichier DLL
    D'avance merci
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [D7] EConvertError lors du chargement dynamique d'une dll
    Par declencher dans le forum Langage
    Réponses: 3
    Dernier message: 11/02/2015, 13h52
  2. Réponses: 7
    Dernier message: 25/09/2013, 11h35
  3. Réponses: 5
    Dernier message: 28/04/2010, 17h18
  4. [CR.NET]Chargement dynamique d'une image
    Par Moah dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 14/12/2004, 11h46
  5. Réponses: 19
    Dernier message: 26/04/2004, 08h54

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