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

Langage Delphi Discussion :

point LIB et/ou DLL


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut point LIB et/ou DLL
    Bonjour,
    J'ai les sources en C d'une application qui utilise des .LIB. Je dispose de ces .LIB ainsi que des .DLL du même nom.
    Je cherche à rééecrire ce programme sous Delphi 2006, mais je n'arrive pas à utiliser ces .LIB.

    D'autre part je tente de trouver les functions exportées dans les .DLL, mais je n'arrive pas à les retrouver. J'utilise dependency walker pour trouver les functions exportées.
    Dans les .LIB en C je vois bien les appels aux functions, mais quand je regarde dans les .DLL les exports, si je trouve des functions correspondantes, elles commencent par un point d'interrogation et je ne peux les charger avec getProcAdress.

    J'ai parcouru tous les exports et pas moyen de trouver un export qui correspond aux functions dont j'ai besoin.
    Par exemple:
    Dans le code C que j'ai, il y a un appel du type :
    Eobj.Reco(&Z1,256,crClasse,cBuffer);

    Je cherche donc Reco comme function exportée dans le jeu de DLL et je trouve ?Reco.
    Si j'arrive bien à charger la DLL concernée, la function Reco ou ?Reco me renvoie Nil sur le GetProcAdress.

    Par contre si je prends une autre DLL de ce jeu, dont les exports sont bien nommés, comme dans mes propres DLL, le GetProcAdress est cohérent.

    Il me reste une autre solution, c'est de tenter d'utiliser les .LIB directement dans mon code Delphi, mais je ne sais comment faire. Je pense à un include ou autre pour inclure ces .LIB à mon projet, mais je ne sais comment faire.

    Avez-vous déjà utilisé des .LIB pour le C dans un projet Delphi et si oui comment avez-vous fait vos déclarations ?


    Merci pour votre aide...

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    en C il est possible de "mangler" les fonctions, elles ont alors une codification qui permet de connaître le nombre et le type des paramètres, c'est peut-être le cas de ces DLL.

    ceci dit le getProcAddress fonctionne malgré tout.

    maintenant si ce sont des objets C++ c'est très compliqué à utiliser dans Delphi - j'ai exploré ça à l'époque de Kylix pour faire du QT sans le wrapper Borland - la solution est d'ailleurs généralement d'utiliser un wrapper C qui remet à plat les fonctions.

  3. #3
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    en C il est possible de "mangler" les fonctions, elles ont alors une codification qui permet de connaître le nombre et le type des paramètres, c'est peut-être le cas de ces DLL.

    ceci dit le getProcAddress fonctionne malgré tout.

    maintenant si ce sont des objets C++ c'est très compliqué à utiliser dans Delphi - j'ai exploré ça à l'époque de Kylix pour faire du QT sans le wrapper Borland - la solution est d'ailleurs généralement d'utiliser un wrapper C qui remet à plat les fonctions.
    Bonjour,

    Si je comprends bien, il n'y a pas de différence (d'un point de vue des fonctionnalités) entre utiliser un .LIB et utiliser le .DLL.


    Les fonctions accessibles sont les mêmes et puisque j'arrive à charger puis utiliser des fonctions exportées sur certaine de ces DLL, je dois pouvoir utiliser celles que je vois dans le code C quand il utilise les .LIB ?

    Donc c'est simplement que je suis un manche en C

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    Bonjour,

    Si je comprends bien, il n'y a pas de différence (d'un point de vue des fonctionnalités) entre utiliser un .LIB et utiliser le .DLL.


    Les fonctions accessibles sont les mêmes et puisque j'arrive à charger puis utiliser des fonctions exportées sur certaine de ces DLL, je dois pouvoir utiliser celles que je vois dans le code C quand il utilise les .LIB ?

    Donc c'est simplement que je suis un manche en C
    un .LIB peut contenir tout et n'importe quoi...mais c'est inexploitable dans Delphi

    le problème que j'avais avec QT par exemple, c'est que les DLL exposent des objets, que les .h permettent d'utiliser...mais les .h contenaient également du code C qu'il fallait donc reproduire dans Delphi pour pouvoir utiliser la DLL (le .so dans le cas de Kylix sous Linux).

    le .LIB c'est du code précompilé, ça peut être simplement ce qu'il faut pour charger la DLL, mais ça peut très bien contenir du code spécifique qu'il faut recréer dans Delphi...sans les sources c'est difficile à savoir.

  5. #5
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    un .LIB peut contenir tout et n'importe quoi...mais c'est inexploitable dans Delphi

    le problème que j'avais avec QT par exemple, c'est que les DLL exposent des objets, que les .h permettent d'utiliser...mais les .h contenaient également du code C qu'il fallait donc reproduire dans Delphi pour pouvoir utiliser la DLL (le .so dans le cas de Kylix sous Linux).

    le .LIB c'est du code précompilé, ça peut être simplement ce qu'il faut pour charger la DLL, mais ça peut très bien contenir du code spécifique qu'il faut recréer dans Delphi...sans les sources c'est difficile à savoir.
    Merci pour ces précisions,
    je sais dans qu'elle direction chercher maintenant.
    je clos le sujet

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/06/2006, 12h50
  2. Réponses: 3
    Dernier message: 07/04/2006, 11h27
  3. Problème pour linker la lib d'une Dll
    Par damien99 dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 23/02/2006, 23h20
  4. Réponses: 5
    Dernier message: 06/12/2005, 17h34
  5. [Pascal UCSD] Fichier .lib associé à une DLL
    Par nikhil dans le forum EDI
    Réponses: 3
    Dernier message: 25/07/2005, 16h02

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