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

Free Pascal Discussion :

Problème de référencement d'une DLL [Free Pascal]


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Par défaut Problème de référencement d'une DLL
    Bonjours, voici mon problème :

    Quelqu'un m'a fournis une DLL programmée en pascal et il m'est impossible de la référence dans la base de registre de windows en utilisant la fonction Regsvr32.
    J'obtiens le message d'erreur suivant :

    Load Librairy a échoué. une routine d'initialisation d'un librairie dynamique (dll) a échoué
    Hors avec son executable les appels à la dll fonctionnent très bien !

    La structure du fichier source de la DLL respecte le schéma suivant :

    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
    25
     
    library trench; {le nom de notre dll}
    Uses crt,Windows;
     
    function passage(p1,p2 :pchar):boolean; stdcall;  { La fonction que l'on veut exporter }
    var
    Param1,Param2:string;
    ok:boolean;
    begin   { debut }
      Param1 := StrPas(p1);
      Param2 := StrPas(p2);
      ok := false;
      if (Param1=Param2) then
      begin
         ok := true;
      end;
      result := ok ; { le resultat sous forme de booleen}
    end ; { fin de la fonction }
     
    Exports { la partie qui stipule les exports }
    passage;
     
    begin
    { code au chargement de la dll, ici rien... }
    end.
    Merci d'avance à ceux qui pourront m'aider à rendre cette DLL compatible avec windows afin de pouvoir l'utiliser dans d'autres langage qu'en pascal.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 049
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il me semble qu'il faille spécifier la directive export dans la déclaration de la fonction passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function passage(p1,p2 :pchar):boolean; stdcall; export;
    et donner un index (et éventuellement un alias) dans la section exports :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exports 
    passage index 1;
    Je ne vois pas trop à quoi sert la déclaration de crt dans la clauses uses ?

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Par défaut
    Merci je vais tester tout ça et vous tenir au courant.
    La clause crt ne sert à rien ici car c'est un exemple de test mais elle est utile dans la vrai DLL j'ai simplement oublié de la retirer !

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Par défaut
    Avec ce code j'obtiens toujours le même message d'erreur... je désespère peut être dois-je changer d'EDI pour créer des dll compatibles avec Windows ?

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 049
    Billets dans le blog
    2
    Par défaut
    As-tu essayé de tester LoadLibrary et GetProcAddress sur ta dll dans un petit prog ? Essaye également d'ajouter un alias après l'index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exports 
    passage index 1 alias 'passage';
    Au fait, quel code d'erreur renvoie exactement Regsvr32 ?
    http://support.microsoft.com/default.aspx?kbid=249873
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Par défaut
    En fait j'arrive très bien importer ma dll à partir d'un programme pascal.

    C'est lorsque j'essai d'importer ma dll dans un autre langage (en l'occurence VB6 ici) que ça deviens un vrai calvaire car la DLL doit être enregistrée dans la base de registre.

    Même l'api LoadLibrary echoue lorsque j'essai un chargement dynamique "manuel" alors que sous dev-pascal cette fonction marche parfaitement !

    L'ajout d'un alias ne change toujours pas le problème

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

Discussions similaires

  1. Problème d'importation d'une DLL dans CVI
    Par samanderson dans le forum Windows
    Réponses: 16
    Dernier message: 16/08/2006, 14h45
  2. [Win32]Problème au chargement d'une DLL C++
    Par FamiDoo dans le forum MFC
    Réponses: 22
    Dernier message: 05/07/2006, 11h10
  3. [MFC] Problèmes d'inclusion d'une DLL
    Par CaptnB dans le forum MFC
    Réponses: 1
    Dernier message: 12/05/2006, 18h01
  4. [VB] Problème de chargement d'une DLL
    Par Elijha dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/05/2006, 09h24
  5. Problème de création d'une dll...
    Par adrien954 dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/10/2005, 10h46

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