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

Autres éditeurs Discussion :

Linker la bonne fonction avec la bonne bibliothèque


Sujet :

Autres éditeurs

  1. #1
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut Linker la bonne fonction avec la bonne bibliothèque
    Bonjour,
    Je possède deux bibliothèques statiques, avec leurs headers respectifs. Le souci est que les deux possède des fonctions possédant le même nom.
    Comment faire pour linker la fonction appelée avec la bibliothèque que je souhaite?
    Je travaille à la fois avec VC 2010 sous win, et gcc/makefile sous linux.
    Merci

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Hum... tu ne peux pas retoucher l'une des deux librairies. Ce n'est pas pour rien qu'on a inventé les namespaces en C++. Autrement, tu vas te retrouver à mettre en œuvre des techniques bien compliquées pour pas grand chose.

    En premier lieu, je vois comme ça mais il doit y avoir moyen de trouver d'autres solutions tordues à une situation tordue.
    • Pour chacune des librairies statiques, faire une librairie dynamique qui wrappe les fonctions, malheureusement toutes celles que tu utilises, et en changeant bien entendu le nom des dites-fonctions et qui linke contre la statique.
    • Ouvrir les librairies statiques à la main (voir dlopen et LoadLibrary) et charger les symboles à la main. C'est ce qu'on met en œuvre pour les plugins.



    [EDIT] Je me demande si ta question n'est pas plus simple que cela. Tu veux juste utiliser une des librairies. Dans ce cas, il te suffit d'indiquer la bonne dans ton projet Visual Studio ou ton Makefile et de changer quand tu veux utiliser l'autre. Dans ce cas, c'est plus un problème de compilation.[/EDIT]

  3. #3
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Bonjour et merci pour la réponse.
    Je teste plusieurs versions de la même bibliothèque. L'interface ne change pas, les fonctions ont les mêmes noms, mais leur implémentation est différente.
    Donc toujours le même namespace, le même nom de bibliothèque, même header. Seul les chemins changent.
    Le but est de mesurer le gain en performance lors du passage d'une version à une autre.
    Je voudrais qu'un même programme puisse tester toutes les versions de la bibliothèque, sous Win et Linux.
    Les bibliothèques étant statiques, donc exit dlopen et LoadLibrary...

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Les bibliothèques étant statiques, donc exit dlopen et LoadLibrary...
    Oui, tout à fait, réponse trop rapide.

    Uniquement en statique, je ne vois aucun moyen pour te lier à deux librairies avec les mêmes symboles et il y en a sûrement aucun (il suffit de penser aux erreurs pour symbole défini deux fois). J'espère pour toi que quelqu'un me contredira.

    Si tu veux faire des mesures de performance, je te propose deux techniques. Les deux utilisent un exécutable pour chaque version de la librairie.

    1. Tu places des mesures de temps dans ton code que tu affiches ou stockes dans un fichier. Tu lances plusieurs fois chaque exécutable et tu moyennes les temps. Mieux, tu travailles en temps CPU si tu ne mesures pas des performances liées à des ressources externes.

    2. Sous linux, callgrind qui stocke un maximum d'information sur les exécutions d'un exécutable : temps de passage dans chaque fonction, en self ou non, nombre de passage, répartition... Tu n'auras plus qu'à comparer les différentes exécutions : une mine d'information...

Discussions similaires

  1. fonction avec if sur input radio qui ne renvoie pas la bonne valeur
    Par eddflo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2009, 02h20
  2. Comment bien installer GTK+ avec la "bonne version"?
    Par 0v3rb1t dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 17/11/2007, 00h43
  3. Apprendre avec de bonnes habitudes : Ada ou Pascal ?
    Par steiner81 dans le forum Débuter
    Réponses: 15
    Dernier message: 03/06/2007, 01h38
  4. [VB.NET]MDI Avec une bonne apparence
    Par charaf dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/12/2006, 16h10
  5. forcer le telechargement avec la bonne Extetion!
    Par zelig dans le forum Langage
    Réponses: 1
    Dernier message: 23/07/2006, 15h37

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