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

C++/CLI Discussion :

Linker une librairie visual avec g++ sous windows 7 64


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 30
    Par défaut Linker une librairie visual avec g++ sous windows 7 64
    Bonjour, je dispose d une librairie créée avec visual, j aimerais linker avec un programme que j ai fait en g++.

    J ai cru comprendre qu il faillait faire des modifs au niveau de la librairie (probleme de compatibiltié)

    SI quelq u un pouvait m aider. J ai lu qu il fallait utiliser reimp pour créer un fichier .def amis apres je ne comprend pas trop ce que je dois faire...

    merci encore

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Et en suivant les liens dans les pages que vous avez vous même donnés ??? :
    http://outofhanwell.wordpress.com/20...ingw-projects/

  3. #3
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 30
    Par défaut
    bonjour,
    j ai effectivement lu ca mais je ne compred pas trop ce qu eje dois faire :

    Solution 1

    1.Create a definition file using reimp. : OK c est facile...
    2.For each stdcall function (formatted as _name@ordinal) add a line name = _name@ordinal, allowing MinGW to map its stdcall naming convention to that of MSVC. : ca se gate un peu... je dois changer quoi la ?

    j ai des truc comme ca dans la lib.. (j ai copié que les premieres lignes...)
    ??0?$omi_IntTable@PEAXVSMABasOmiDefaultAllocator@@@@QEAA@XZ
    ??0atr_StringBase@@IEAA@AEBV0@@Z
    ??0cow_String@@QEAA@AEBV0@@Z
    ??0cow_String@@QEAA@PEBD@Z
    ??0cow_String@@QEAA@PEBDH@Z
    ??0stdB_UelmatUserSub@@QEAA@PEAVElementLayout@@PEAN1PEAH22222111111111111111111AEAH2@Z
    ??
    3.Use dlltool to convert the MSVC library into a MinGW library with the new definition. : dlltool va me generer quoi et a partir de quoi?

    It worked! To compile the project you must simply:


    solution 2
    1.Download and install the Qt/Windows package, which includes MinGW... à priori je l ai fait
    2.Download reimp and drop it into the MinGW/bin folder. Ok c fait
    3.Download the development packages for the third-party libraries and point an environment variable to that location. develpoement packages... je dois faire quoi la?
    4.Build the project with the usual qmake/make commands.

    merci encore

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Là, ça se corse.
    Les symboles que vous nous montrez sont des symboles avec le mangling de nom C++ de Visual Studio.
    Le mangling C++ n'est pas standardisé.
    A l'heure actuelle, votre bibliothèque n'est compatible qu'avec la version de Visual Studio avec lequel elle a été généré.
    La garantie avec les autres versions de VS n'est même pas assurée.
    Et pire, avec la même version de VS mais avec des options de compilation différentes, c'est des emmerdes sans noms.

    En clair, ceux qui on conçu cette bibliothèque sont des branquignols.

    Une stratégie à court terme est de faire une bibliothèque de wrapping autour de ce machin, qui elle exportera ses symboles selon les conventions C et non C++.

  5. #5
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 30
    Par défaut
    J arrive a linker avec n importe quelle version de visual...

    Sinon
    le coup du dlltool... pas possible? il me semblait qu on pouvait modifier le mangling comme ça mais je n ai pas tout compris sur la procédure

    merci encore

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    J arrive a linker avec n importe quelle version de visual...
    Changez la configuration du compilateur pour que la lib et le programme utilisateur de la lib, vous allez voir les dégâts.

    L'export de classes C++, c'est n'import quoi. C'est juste bon à faire des joujoux.

    il me semblait qu on pouvait modifier le mangling
    C'est le but de toute la manup avec " line name = _name@ordinal" qui fait des alias entre ne nom à la VS et ne nom à la GNU.
    Mais pour cela, il faut utiliser la même convention d'appel. Le mangling est là pour éviter d'appeler les méthodes selon une convention d'appel qui ne convient pas.

    Et là, en faisant des exports de classe, c'est pas des conventions _stdcall mais _thiscall, et là, mon gars, c'est du non standard de chez non standard.

    Fait une lib qui wrappe en C cette cochonnerie.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/07/2014, 08h58
  2. [Visual C++ 2010] Problème pour linker une librairie
    Par CleeM dans le forum Visual C++
    Réponses: 9
    Dernier message: 30/08/2012, 16h22
  3. Réponses: 6
    Dernier message: 02/02/2011, 10h13
  4. linker une librairie .so sous éclipse/QT
    Par freetof dans le forum Eclipse C & C++
    Réponses: 3
    Dernier message: 31/10/2008, 09h36
  5. Réponses: 0
    Dernier message: 05/12/2007, 06h20

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