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

Visual C++ Discussion :

Linker une fonction d'un .lib


Sujet :

Visual C++

  1. #1
    Membre extr�mement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    926
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 926
    Par d�faut Linker une fonction d'un .lib
    Bonjour,

    Dans Visual Studio Je voudrais dans un .lib (librarie statique ) appeler (ou equivalent de linker) une fonction d'une autre .lib , mais en mode
    inline c'est � dire faire l'�quivalence de "__forceinline", c'est � dire le compilateur
    incorpore � r�petition le contenue de la fonction de l'autre .lib autant de fois que je l'appelle.

    Est - ce possible ?
    J'en aie besoin.

    Info : Les fonctions d�clar� en inline definit dans une librarie statique ne sont pas exportable.

    Merci beaucoup

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    D�veloppeur C
    Inscrit en
    Ao�t 2004
    Messages
    2 366
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur C

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 2 366
    Par d�faut
    salut

    comme tu le dis toi-m�me : inline est li� au compilateur.
    je ne vois pas comment le linker pourrait faire ce boulot.

  3. #3
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    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 503
    Par d�faut
    C'est th�oriquement r�alisable avec des outils d�di�s ou en traficotant les outils d'optimisation globale de VS, mais c'est �minemment complexe et vraiment fragile comme approche.

    Je suis tr�s circonspect sur le bien fond� d'une telle approche.

    Normalement, les fonctions "inlinables" syst�matiquement sont facilement convertible en MACRO et cela ne pose pas de probl�me dans ce cas de les mettre directement dans les fichiers d'header de la lib.

  4. #4
    Membre extr�mement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    926
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 926
    Par d�faut
    J'ai un projet (a.lib) qui met 5 minutes � compiler ,
    cl.exe met enorme de temps � compiler car c'est un projet sp�ciale ,
    et je voudrais dans un autre (b.lib) que le compilateur recopie les code d'une fonction nomm� "mafuncdea" du projet (a.lib) autant de fois que j'appelle la fonction "mafuncdea" dans le projet (b.lib) definit dans le projet (a.lib).

    voil� ;

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    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 503
    Par d�faut
    J'ai un projet (a.lib) qui met 5 minutes � compiler ,
    cl.exe met enorme de temps � compiler car c'est un projet sp�ciale ,
    J'ai travaill� sur des projets dont la compilation compl�te du projet prenait 8 heures sur un octo-pro et de la RAM � foisons et 1h30 au minimum, avant que je ne fasse un d�coupage par Dll, cela relative votre " enorme de temps".

    Pourquoi ne pas en faire une MACRO ?
    Pourquoi ne pas faire un projet de lib sp�cifique ?
    Pourquoi le code source de cette fonction n'est pas transf�rer du projet a.lin au projet b.lib ?

    Vous ne donnez pas assez de d�tails pour justifier d'une approche aussi peu orthodoxe.

  6. #6
    Membre extr�mement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    926
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 926
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    J'ai travaill� sur des projets dont la compilation compl�te du projet prenait 8 heures sur un octo-pro et de la RAM � foisons et 1h30 au minimum, avant que je ne fasse un d�coupage par Dll, cela relative votre " enorme de temps".

    Pourquoi ne pas en faire une MACRO ?
    Pourquoi ne pas faire un projet de lib sp�cifique ?
    Pourquoi le code source de cette fonction n'est pas transf�rer du projet a.lin au projet b.lib ?

    Vous ne donnez pas assez de d�tails pour justifier d'une approche aussi peu orthodoxe.
    En faites , il s'agit de licences num�rique pour mes applications / utilitaires que je vend ,et je fais en sorte pour d�courager le crackeur( pirate).

    Mon id�e :
    un .lib (a.lib) qui g�re le decodage de mes licence qui met un plomb � compiler
    un .lib (b.lib) qui g�re l'affichage d'information utilisateur et les droits d'utilisation de telle fonction(s) de mes applications.

    Pour gagner du temps � chaque modification de la lib b.lib ,c'est inliner la fonction de decodage de licence depuis le lib "a.lib" ,c'est la meilleur solution car si pas inliner il suffit que le crackeur remplace l'instruction d'appelle "CALL" par une autre fonction et le tour est jouer.

    Pour le moment tout est dans le m�me .lib.

  7. #7
    Membre �m�rite
    Homme Profil pro
    R&D imagerie 3D / prog embarqu�e
    Inscrit en
    Mars 2007
    Messages
    419
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : R&D imagerie 3D / prog embarqu�e
    Secteur : Sant�

    Informations forums :
    Inscription : Mars 2007
    Messages : 419
    Par d�faut
    Salut,

    Comme l'a dit fregolo52, l'inlining est une fonction du compilateur et non du linker. Tu ne peux donc pas inliner tes fonctions � l'ext�rieur de ta lib en fournissant seulement le header.

    Par contre, tu peux impl�menter directement ta fonction dans le .h et �a marchera puisque ta fonction sera inlin�e une fois � la compil de a et une autre � la compil de b.

    Ce que je ne comprend pas, c'est ce que tu veux distribuer. Est-ce :
    - Les lib statiques a et b
    - Une lib statique c qui serait un link de a et b
    - Un exe � partir de a et b
    - Une DLL � partir de a et b

    Si tu distribues une lib c, un exe ou une DLL, pas de pb les calls � a ne pourront pas �tre remplac�s comme �a.
    Pour a et b, je vois pas trop pourquoi tu voudrais faire �a.

  8. #8
    Membre extr�mement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    926
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 926
    Par d�faut
    Citation Envoy� par djuju Voir le message
    Salut,

    Comme l'a dit fregolo52, l'inlining est une fonction du compilateur et non du linker. Tu ne peux donc pas inliner tes fonctions � l'ext�rieur de ta lib en fournissant seulement le header.

    Par contre, tu peux impl�menter directement ta fonction dans le .h et �a marchera puisque ta fonction sera inlin�e une fois � la compil de a et une autre � la compil de b.

    Ce que je ne comprend pas, c'est ce que tu veux distribuer. Est-ce :
    - Les lib statiques a et b
    - Une lib statique c qui serait un link de a et b
    - Un exe � partir de a et b
    - Une DLL � partir de a et b

    Si tu distribues une lib c, un exe ou une DLL, pas de pb les calls � a ne pourront pas �tre remplac�s comme �a.
    Pour a et b, je vois pas trop pourquoi tu voudrais faire �a.
    Je distribue l'exe ou la dll utilisant la lib b.

    Mais tanpis je ferai que sur un seule .lib qui utilise les header h mais pas les macros.

    Peux �tre faire ce genre chose avec l'intrinsic ?

  9. #9
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    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 503
    Par d�faut
    Je ne comprends pas pourquoi vous ne voulez pas utiliser de MACRO.
    C'est l'un des seuls cas ou cela se justifie pleinement ?
    Avec les macros, dans un .h, vous avez plus de probl�me, non ?
    Pas lib et pas de call.
    Ce n'est pas le top pour la compatibilit� inter-compilation ou la maintenance mais faut faire des compromis.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 27/06/2011, 15h24
  2. R�ponses: 5
    Dernier message: 11/05/2011, 09h27
  3. R�ponses: 4
    Dernier message: 22/07/2010, 17h55
  4. R�ponses: 1
    Dernier message: 30/01/2010, 22h51
  5. [Turbo Pascal] Allocation et d�sallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    R�ponses: 13
    Dernier message: 17/11/2002, 20h14

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