Bonjour,
J'ai fait une bibliothèque statique en C++ et pour l'attaquer j'ai fait une structure avec des fonctions contenant que des types primitifs.
L'objectif est qu'un utilisateur qui est en C pure puisse l'utiliser.
Mais je sais que la définition des fonctions en C++ est exposée différemment dans les binaires pour gérer les surcharges, donc le type des paramètres est indiqué dans la définition empêchant ainsi les doublons sur uniquement les noms.
Par conséquent j'ai un doute sur la possibilité d'utiliser ma bibliothèque en C pure. En gros, je veux fait l'inverse de "extern "C" { ... }" qu'on utilise pour importer des fonctions C afin d'exposer mes fonctions en C Style même si derrière l'implémentation redirige vers du C++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 (lib.h) struct Lib { int MaFonction1(); int MaFonction2(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 (lib.cpp) Lib::MaFonction1() { Manager.FonctionCpp1(); } Lib::MaFonction2() { Manager.FonctionCpp1(); }Est-ce possible ? Peut-être qu'il n'y a juste à mettre "extern "C" {" en début du fichier lib.h et "}" en fin ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 (main_user.c) #include "lib.h" int main(int argc, char** argv) { Lib l; l.MaFonction1(); l.MaFonction2(); }
Merci à tous,
A bientôt
Partager