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

VC++ .NET Discussion :

Faire des .lib a partir des .A de gcc


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut Faire des .lib a partir des .A de gcc
    Bonjour j'aimerais savoir si quelqu'un aurait une application qui permettrais de récupérer des .lib à partir des .a que j'ai récupéré. Car cl n'accepte pas ces derniers, il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning LNK4089: toutes les références à 'd000000.o' ignorées pas /OPT:REF
    en effet j'ai comparé des .lib et des .a , elles ne sont pas battie de la meme façon

    Merci d'avance
    Tarboeuf

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Ce sont des .dll.a ? Je ne sais si c'est possible pour des librairies purement statiques. Je peux toujours te donner la méthode pour une DLL.

    Quand tu demandes à gcc de générer une DLL, il génére la DLL et un fichier .dll.a qui est l'équivalent du .lib de Visual C++. A confirmer. Tu peux aussi lui demander de générer un fichier .def avec l'option "-Wl,--output-def,malib.def". Ce fichier contient la liste des symboles exportés. Il est aussi possible d'écrire directement le fichier à la main.

    C'est avec ce fichier def et l'outil lib de Visual que tu pourras générer une librarie d'importation compatible avec Visual.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib.exe /machine:i386 /def:malib.def /out:malib.lib

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Merci beaucoup j'essaye dessuite

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Je te remercie ça marche très bien, par contre j'ai du utiliser impdef.exe, petit utilitaire de Borland compiler pour récupérer le .def de ma dll

    avec la ligne de commmande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    impdef malib.def malib.dll

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Après quelque tests, je viens de remarquer que les dll compiler avec gcc ne sont pas compatible avec le compilateur visual, est-ce que quelqu'un aurait une idée de la raison ?

    test effectuer :

    compiler dll sous cl -> suppression .lib -> creation d'un nouveau -> utilisation du nouveau -> OK

    compiler dll sous gcc -> utilisation du .lib.a -> OK

    compiler dll sous gcc -> creation d'un .lib-> utilisation du nouveau -> (pas d'erreur mais ma fonction n'est pas utilisée )

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par défaut UP compatibilité dll visual / gcc
    Up!

    Je rencontre le même problème.
    j'essaie d'utiliser une dll compilée sous Visual (il y a un .lib avec cette dll, donc je présume que c'est de visual). Compilation et édition des liens Ok avec gcc (sous eclipse), mais en exécution, rien ne se passe.
    (console vide...)

    Quelqu'un a une idée?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Par défaut solution
    J'utilise GCC avec minGW.
    La DLL issue de MSVC n'est pas compatible avec GCC.
    Il s'agit de générer un .def qui contient les correspondances des références, à l'aide de pexports (disponible dans les minGW tools).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     pexports testdll.dll | sed "s/^_//" > testdll.def
    Ensuite l'outil dlltool (disponible dans la minGW) permet de générer le .a (import library)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dlltool -U -d testdll.def -l libtestdll.a
    Enfin on compil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gcc -o testmain testmain.c -L. -ltestdll

    Cependant, la présence du .lib associé à la dll peut suffire à compiler linker et exécuter correctement. C'est un binaire qui doit contenir les correspondances entre les référence MSVC et GCC.
    GCC utilise le testdll.lib qui est fourni avec ma dll, il suffit de ne pas oublier de mettre la path de la dll dans PATH.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/11/2007, 15h25
  2. Comment ajouter des champs a partir des valeurs d'un autre champ ?
    Par zerkz dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/05/2007, 12h05
  3. Réponses: 2
    Dernier message: 13/04/2007, 13h03
  4. Pourquoi inclure des .lib pour utiliser des DLLs système?
    Par NicolasJolet dans le forum Windows
    Réponses: 4
    Dernier message: 08/08/2006, 14h59

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