Je dois créer une bibliothèque wrapper pour le code C qui enveloppe ma bibliothèque C++. Existe-t-il un moyen de créer cette bibliothèque wrapper de telle sorte que l'utilisateur doit lier uniquement cette bibliothèque wrapper et n'a pas à inclure toutes les bibliothèques (C++) sur la ligne de commande de l'éditeur de liens?Intégrer toutes les références externes lors de la création d'une bibliothèque statique
La structure de mon projet de test ressemble à ceci:
.
├── lib
│ ├── cpp
│ │ ├── print.cc
│ │ └── print.h
│ ├── lib.cc
│ ├── lib.h
└── main.c
Le main.c est un exemple d'application C qui utilise ma bibliothèque. Les fichiers lib.h et lib.cc sont la bibliothèque d'encapsuleur contenant les liaisons C. Ma bibliothèque C++ réside dans le sous-dossier cpp.
Au moment où je l'ai travail en utilisant la chaîne de commandes suivantes:
cd lib
g++ -c lib.cc
ar rcs libib.a lib.o
cd ..
gcc -Ilib -Llib main.c -lib -lstdc++
Cependant, comme vous pouvez voir l'étape de liaison de l'utilisateur doit inclure les bibliothèques C++ utilisées dans ma bibliothèque C++. Dans ce cas, libstdC++. So (ou libstdC++. A si -static est utilisé).
Je voudrais inclure toutes les bibliothèques C++ dans mon libib.a de telle sorte que l'utilisateur peut simplement utiliser la commande suivante pour la compilation:
gcc -Ilib -Llib main.c -lib
Vous devriez faire des bibliothèques partagées (pas statiques), voir ma réponse. –