Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2343 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Comment wrapper des fonctions dans une librairie statique de Windows?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment wrapper des fonctions dans une librairie statique de Windows?

n°2248876
mogana
Posté le 20-01-2015 à 18:13:18  profilanswer
 

Bonjour
 
Je ne suis pas arrivé à trouver un topic avec ce sujet exactement.
J'ai une librairie windows à linker en statique.
En gros supposons une lib A en static avec une fonction void f(int) en dllexport.
Je voudrais constituer une dll qui intègre cette lib tout en exposant ma propre version de void f(int) qui appellera dans son code la fonction f de la lib A ce qui est impossible puisque j'ai deux mêmes fonctions.
Est-ce que qq'un aurait déjà résolu ce genre de cas ?
 
En attendant, je suis obligé de linker avec la dll A et d'appeler un getProcAdress.
Ma piste pour le moment, ce serait de faire une indirection :
- faire une lib B qui wrappe la fonction f de A dans une fonction f' et exporter f'
- faire ma dll C qui linkera B en appelant f' dans une fonction f de même signature que celle de A.
Cependant je pense que je vais bloquer puisque le linker aura quand même deux fonctions void f(int).  
 
Merci d'avance


Message édité par mogana le 20-01-2015 à 20:20:53
mood
Publicité
Posté le 20-01-2015 à 18:13:18  profilanswer
 

n°2248881
gilou
Modérateur
Modzilla
Posté le 20-01-2015 à 20:07:13  profilanswer
 

Ben si tu as des librairies, elles doivent avoir des namespaces (un concepteur de librairie C++ qui n'utiliserait pas un namespace, faut le passer à la broyeuse et ses restes à l'acide, avant qu'il ne fasse d'autres dégâts...)
Et en préfixant le bon namespace, fini tes problèmes.
A+,

Message cité 1 fois
Message édité par gilou le 20-01-2015 à 20:07:51

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2248882
mogana
Posté le 20-01-2015 à 20:20:31  profilanswer
 

gilou a écrit :

Ben si tu as des librairies, elles doivent avoir des namespaces (un concepteur de librairie C++ qui n'utiliserait pas un namespace, faut le passer à la broyeuse et ses restes à l'acide, avant qu'il ne fasse d'autres dégâts...)
Et en préfixant le bon namespace, fini tes problèmes.
A+,


 
C'est du C.
Ce qui fait que je me suis surement trompé de catégorie  :??:  
je essayer de déplacer.
en tout cas merci pour la réponse.  :jap:

n°2248883
olivthill
Posté le 20-01-2015 à 21:21:32  profilanswer
 

[:yohland] Juste une 'tite remarque en passant :
 
La lettre "D" dans "DLL" signifie "Dynamic". Donc, ce n'est pas une bibliothèque statique.
Une bibliothèque statique est généralement un ".a", voire un ".lib", mais pas un ".dll".

n°2248892
mogana
Posté le 20-01-2015 à 22:19:31  profilanswer
 

olivthill a écrit :

[:yohland] Juste une 'tite remarque en passant :
 
La lettre "D" dans "DLL" signifie "Dynamic". Donc, ce n'est pas une bibliothèque statique.
Une bibliothèque statique est généralement un ".a", voire un ".lib", mais pas un ".dll".


 
merci d'avoir précisé  :jap:  
cependant je ne vois pas où j'ai fait la confusion  :??:  
j'ai bien deux versions de A, une lib et une dll.
Mais pour certaines raisons, je veux faire une dll qui intègre une lib mais tout en exposant dans la dll les foncions exportées de la lib. (dll pour la dynamic et lib pour la statique)
en gros une nouvelle dll A qui wrappe les fonctions de A

n°2248896
gilou
Modérateur
Modzilla
Posté le 20-01-2015 à 23:18:51  profilanswer
 

Si c'est du C, tu n'as qu'un espace de nom pour les fonctions (ce pourquoi bien souvent les fonctions exportées d'une lib sont préfixées par un préfixe commun) donc non, tu n'auras pas moyen d'utiliser deux fonctions de même nom.
C'est typiquement ce type de limitation qui a amené le C++ a créer les namespaces.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2248923
mogana
Posté le 21-01-2015 à 09:31:40  profilanswer
 

gilou a écrit :

Si c'est du C, tu n'as qu'un espace de nom pour les fonctions (ce pourquoi bien souvent les fonctions exportées d'une lib sont préfixées par un préfixe commun) donc non, tu n'auras pas moyen d'utiliser deux fonctions de même nom.
C'est typiquement ce type de limitation qui a amené le C++ a créer les namespaces.
 
A+,


 
Je m'en doutais, merci  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Comment wrapper des fonctions dans une librairie statique de Windows?

 

Sujets relatifs
Manipuler l'explorateur windows par macro VBAObtenir les droits d' administrateur sous windows 7 /8 / 10
C++ builder 6 et l'aide sur windows sevenfichiers et fonctions
[C#][Windows Form] "Form" toujours au dessus d'un autrescript xcopy windows
les fonctionsdevelopper un petit exe pour windows
Création d'un script ou btach de copie de fichier sous windowsFonctions avec requetes en base MySQL
Plus de sujets relatifs à : Comment wrapper des fonctions dans une librairie statique de Windows?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR