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

C++ Discussion :

Bibliothèque statique C++ export en C


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Bibliothèque statique C++ export en C
    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();
    }
    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();
    }
    Est-ce possible ? Peut-être qu'il n'y a juste à mettre "extern "C" {" en début du fichier lib.h et "}" en fin ?

    Merci à tous,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    l'implémentation on s'en moque, c'est interne. Que ça utilise du C++, C#, JAVA ou peu importe... ça ne concerne que toi et pas quiconque veut utiliser ta lib. (on serait bien mal sinon)
    Si tu veux exposer une interface C, il faut utiliser extern "C".
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Parfait merci beaucoup
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/01/2015, 10h44
  2. Réponses: 9
    Dernier message: 09/11/2007, 13h46
  3. Réponses: 4
    Dernier message: 28/08/2007, 22h34
  4. Problème de lien avec une bibliothèque statique
    Par streetpc dans le forum C++/CLI
    Réponses: 2
    Dernier message: 28/10/2006, 17h38
  5. Utiliser une bibliothèque statique
    Par djflex68 dans le forum MFC
    Réponses: 6
    Dernier message: 15/08/2005, 19h26

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