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 :

[MacOS] Problème d'accès à une librairie [Lazarus]


Sujet :

Lazarus Pascal

  1. #21
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 889
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 889
    Points : 15 326
    Points
    15 326
    Par défaut
    Citation Envoyé par ChPr Voir le message
    NOTA : je reprends ma question du post #6 : quelle est la différence entre Pointer(MaFonction) et @MaFonction ?
    Pas la moindre idée. Faudrait voir avec Andnotor.

    Et sinon, poste là https://www.developpez.net/forums/f1...pple/mac-os-x/, des fois que ça morde...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #22
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 876
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type TEnvoiDirLib = function(Dir: PChar): Boolean; stdcall;
    var  EnvoiDirLib: TEnvoiDirLib;
    begin
      if HndLib <> 0 then
        begin
          // prend la variable EnvoiDirLib comme pointeur non typé pour lui attribuer la valeur de retour de GetProcAddress
          Pointer(EnvoiDirLib) :=  GetProcAddress(HndLib, 'EnvoiDirLib');  
          // peut s'écrire aussi 
          EnvoiDirLib :=  TEnvoiDirLib(GetProcAddress(HndLib, 'EnvoiDirLib'));  
          // teste que l'adresse de la variable EnvoiDirLib n'est pas nil 
          if @EnvoiDirLib <> nil
    Pour autant, ceci n'explique pas la non récupération de la fonction dans la dll...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #23
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 784
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 784
    Points : 13 422
    Points
    13 422
    Par défaut
    pointer(Variable) est juste un transtypage du contenu de la variable alors que @Variable est l'adresse de cette variable. @Variable est équivalent à addr(Variable).

    A mon avis c'est la déclaration de la procédure dans la bibliothèque qui pose problème. Les procédures exportées devraient systématiquement débuter par un souligné _EnvoiDirLib puisqu'en chargement dynamique le pendant pour Mac de GetProcAddress l'ajoute systématiquement.

    DLL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function _EnvoiDirLib(Dir: PChar): Boolean; cdecl;
     
    exports
      _EnvoiDirLib;
    L' exécutable ne change pas puisque le souligné est ajouté d'office.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetProcAddress(HndLib, 'EnvoiDirLib');

  4. #24
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 088
    Points : 1 055
    Points
    1 055
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    pointer(Variable) est juste un transtypage du contenu de la variable alors que @Variable est l'adresse de cette variable. @Variable est équivalent à addr(Variable).
    Merci beaucoup pour cette précision.

    Citation Envoyé par Andnotor Voir le message
    ... A mon avis c'est la déclaration de la procédure dans la bibliothèque qui pose problème. Les procédures exportées devraient systématiquement débuter par un souligné _EnvoiDirLib puisqu'en chargement dynamique le pendant pour Mac de GetProcAddress l'ajoute systématiquement.
    J'ai rajouté le "souligné" dans ma librairie.

    • Sous Windows, ça ne fonctionne plus !
    • Par contre, sous MacOS, ça fonctionne parfaitement.

    Un grand merci "Andnotor".

    Cordialement.

    Pierre.

  5. #25
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 784
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 784
    Points : 13 422
    Points
    13 422
    Par défaut
    Plus qu'à faire un {$IFDEF} en fonction de la plateforme

  6. #26
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 088
    Points : 1 055
    Points
    1 055
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Plus qu'à faire un {$IFDEF} en fonction de la plateforme
    Effectivement car ça ne fonctionne pas non plus sous Linux.

    Encore merci.

    Pierre.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Accès aux librairies locales à partir d'une applet
    Par maverick5051 dans le forum Applets
    Réponses: 55
    Dernier message: 22/11/2012, 12h33
  2. [2.0]Acces ressources.resx depuis une librairie
    Par bizet dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/11/2008, 15h54
  3. Accès fonction d'une librairie depuis un classe
    Par Bourrine dans le forum Débuter
    Réponses: 2
    Dernier message: 08/08/2008, 09h15
  4. Accès à une librairie externe
    Par zenii dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/03/2008, 14h26
  5. une librairie de gestion de droits d'accès ...
    Par Seth77 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 22/01/2006, 09h09

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