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

MFC Discussion :

creer un fichier lib à partir d'une DLL


Sujet :

MFC

Vue hybride

benoit70 creer un fichier lib à partir... 07/12/2004, 10h08
Aurelien.Regat-Barrel Moui, avec de la bidouille.... 07/12/2004, 10h57
10_GOTO_10 La bidouille s'appelle: ... 07/12/2004, 17h58
Invité je doute que cela soit... 08/12/2004, 11h25
Aurelien.Regat-Barrel Il veut pas transformer sa... 08/12/2004, 11h46
Invité Aurélien je veux bien te... 08/12/2004, 18h05
darkvadr Déterrage de post mais bon... 21/09/2008, 15h26
darkvadr 8OPar expérience, le plus... 21/09/2008, 15h30
Mat.M Que la lib soit livree ou... 23/09/2008, 21h13
darkvadr .02$ 28/09/2008, 22h58
Aurelien.Regat-Barrel Oui, normalement. Mais... 08/12/2004, 18h23
benoit70 Le lien ou tu m'envoie n'est... 08/12/2004, 22h13
Aurelien.Regat-Barrel Oui, car eux ils utilisent un... 09/12/2004, 12h12
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 101
    Par défaut creer un fichier lib à partir d'une DLL
    J'ai trouvé une DLL(sur le net) qui m'est très utilile mais je n'ai pas le fichier lib qui va avec.
    Je suis obligé de faire des GetProcAdress, pour chaque fonction.
    (C'est très embettant).
    Est-il possible de créer ce fichier lib, qui contient les pointeurs de fonctions.
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Moui, avec de la bidouille. Il te faut créer un fichier .def qui contient la liste des fonctions exportées puis avec lib.exe ou link je crois tu peux créer un .lib.

  3. #3
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    La bidouille s'appelle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIB /DEF:monfichier.def

  4. #4
    mat.M
    Invité(e)
    Par défaut
    je doute que cela soit possible parce qu'une dll c'est en quelque sorte un exécutable compilé contrairement à une librairie.
    Les structures de fichiers sont radicalement différentes

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Il veut pas transformer sa dll en fichier lib statique (ce qui reste possible avec des softs genre dll2lib), mais créer le fichier .lib qui accompagne la dll, fichier .lib qui permet juste de linker ses programmmes pour utiliser la dll.
    Pour extraire la liste des symboles exportées, plusieurs possibilités. J'ai retrouvé un lien:
    http://sapdb.2scale.net/moin.cgi/MS_20C_2b_2b_20Toolkit
    il utilise link. Mais je me souviens y être parvenu via dependency walker.

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Il veut pas transformer sa dll en fichier lib statique (ce qui reste possible avec des softs genre dll2lib), mais créer le fichier .lib qui accompagne la dll, fichier .lib qui permet juste de linker ses programmmes pour utiliser la dll.
    Aurélien je veux bien te croire mais en général la librairie est TOUJOURS livrée avec le module ( la dll )
    Donc ce qu'il essaie de faire c'est de tricher , une sorte de réingénierie inverse....

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut Déterrage de post mais bon...
    ******************************************
    ***Oups double post, comment on fait pour effacer?***
    ******************************************

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Citation Envoyé par mat.M Voir le message
    Aurélien je veux bien te croire mais en général la librairie est TOUJOURS livrée avec le module ( la dll )
    Donc ce qu'il essaie de faire c'est de tricher , une sorte de réingénierie inverse....
    Par expérience, le plus souvent une dll n'est pas livrée avec le .lib.

    Il y a plusieurs raisons a cela.

    Une dll peut être faite avec n'importe quel langage/compilateur pour peu que celui-ci sache le faire. Et de nombreux compilateurs ne proposent pas de générer un .lib

    Par exemple je programme volontiers mes dll en delphi pour les exploiter en C++.
    Pas de .lib ...

    Comme précédemment indiqué les .lib borland c++ builder ne sont pas compatibles avec les .lib visual c++.

    En effet si les dll sont standardisées (ou presque car les dll d'objets posent des problèmes parfois) ce n'est pas le cas des .lib.

    Il revient la plupart du temps au programmeur de creer le .lib a partir de la dll.

    Il existe des outils pour cela, et un dev les connait.

    Il reste sinon la solution (pas si compliquée ni galère) d'utiliser Loadlibrary et GetProcAdress.

    Ce qui est plus étonnant (voir inadmissible) c'est que la dll ne soit pas livrée avec un code exemple. Celui-ci comprend généralement le .h et les GetProcAdress, ce qui par un jeu de copie facilite le dev.

    Voilà mon grain de sel a la soupe...


    Mais bon sur un post si vieux, je ne sais pas si cela présente un intérêt.

    P.S. je mets quelques smiley pour faire plaisir a ma petite fille...

  9. #9
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par darkvadr Voir le message
    Par expérience, le plus souvent une dll n'est pas livrée avec le .lib.

    Il y a plusieurs raisons a cela.
    Que la lib soit livree ou pas tout depend de la societe ou du concepteur qui la donne.
    Par exemple si la societe decide de fournir une sorte de SDK ( par exemple des composantes payantes ).
    Ou non.
    Il ya des societes specialisees dans la conception de dll, objets .NET,COM etc donc ils fourniront la lib

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut .02$
    Citation Envoyé par Mat.M Voir le message
    Que la lib soit livree ou pas tout depend de la societe ou du concepteur qui la donne.
    Par exemple si la societe decide de fournir une sorte de SDK ( par exemple des composantes payantes ).
    Ou non.
    Il ya des societes specialisees dans la conception de dll, objets .NET,COM etc donc ils fourniront la lib
    Oui effectivement, si c'est le cœur de métier que de concevoir des dll pour x ou y projet, on peut s'attendre au .lib ou du moins a pouvoir le demander pendant la redaction du cahier des charges par exemple.

    On trouve quand même pas mal de dll en circulation sans.

    Un outil comme implib (c++ builder) génère le .lib a partir de la dll sans effort particulier.

    Ce serait bien le diable s'il n'existe pas la même chose pour visual c++

    Allez, petit edit, il y a un outil qui automatise le trick .dll-->.def--->.lib pour visual c++, il s'appelle implib32

    http://www.geocities.com/SiliconVall...6/implib32.htm

    ça date un peu, mais ça fonctionne peut être encore.
    Je n'ai pas testé.

  11. #11
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Oui, normalement. Mais l'informatique est une illustration constante de la loi de murphy .
    S'il a le fichier .h je ne pense pas que ce soit de la rétroconception. Par exemple si c'est un .lib Borland il peut vouloir faire la manip pour en avoir un pour VC++.

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 101
    Par défaut
    Le lien ou tu m'envoie n'est pas très parlant(y a plein de truc qui servent a rien )
    Que faire aujuste pour faire les choses d'une manière simple.
    Tu me parle de dependency, aucun rapport avec le lien.
    Si tu utilise dependency ce serait plutot pour copier les noms des APIs et créer un fichier def.
    Non???

  13. #13
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Oui, car eux ils utilisent un script pour le faire.
    Lis "msvcrt.lib missing", il construit msvcrt.lib à partir de msvcrt.dll.
    Une fois que tu as le .def
    link -dump -exports msvcrt.dll | sed -nf exports.sed >> msvcrt.def
    link -lib -machine:X86 -def:msvcrt.def -out:msvcrt.lib

Discussions similaires

  1. [AC-2010] Creer un fichier excel à partir d'une requête sql
    Par NassCorp dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2013, 17h02
  2. Réponses: 1
    Dernier message: 01/08/2008, 20h12
  3. creer un LIB à partir d'une DLL
    Par phpdev dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/06/2007, 19h47
  4. obtenir un fichier .h a partir d'une dll existante
    Par backstage68 dans le forum Windows
    Réponses: 1
    Dernier message: 05/04/2007, 14h43
  5. pb de récup de handle à partir d'une dll
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 12h29

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