Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Discussion: Wrapper C++ avec SWIG

  1. #1
    Invité régulier
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 6
    Points
    6

    Par défaut Wrapper C++ avec SWIG

    Bonjour,

    Je cherche à faire un wrapper avec le logiciel SWIG, j'explique un peu :
    j'ai du code en C++ qui dépend d'une librairie et j'aimerais faire un wrapper autour de mon code de façon à séparer ce qui dépend de la librairie et ce qui n'en dépend pas. J'ai commencé manuellement à encapsuler mes classes et fonctions dans un wrapper OK pour le principe, le problème c'est que j'ai énormément de fonction, d'opérateurs, de macros etc ... (tous dépendent de la fameuse librairie) ... bref c'est un travail de fourmis j'y arriverai jamais !

    Donc je voudrais utiliser SWIG qui encapsule de façon automatique des fonction, le problème est que dans les documents SWIG que j'ai lus je ne vois pas le C++ comme langage de sortie (target language) ...
    Et cela me surprend beaucoup !

    Quelqu'un pourrait-il m'éclairer là-dessus ... Comment utilise SWIG avec comme langage source le C++ et comme langage de sortie le C++ aussi !

    Merci beaucoup.

    Bonne journée.

  2. #2
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Quand je te lis, j'ai l'impression que tu es totalement sur la mauvaise voie.

    SWIG permet de générer du C++ pour s'interconnecter avec d'autres langages (Python, Java...). On parle de wrapper du code pour un autre langage.

    Mais on parle aussi de wrapper en tant que design pattern. Dans ce cas, un wrapper permet d'adapter une classe à une autre attendue par le client.

    J'ai l'impression que tu te situes dans le second cas et SWIG ne te sera d'aucune utilité.

    Si tu n'arrives pas à isoler l'utilisation de la librairie et que tout ton code repose dessus, il n'y aura pas de miracle. Tu seras fortement lié à cette librairie et tu ne pourras pas y échapper.

  3. #3
    Invité régulier
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 6
    Points
    6

    Par défaut

    Oui en effet je souhaite un petit peu détourner Swig pour mon usage.
    j'ai besoin d'encapsuler toutes les classes et fonctions de ma librairie donc de me faire un wrapper autour de cette librairie ... mais tout en restant en c++, pas d'interfaçage avec un autre langage ... Et en lisant la doc Swig j'ai l'impression que ça n'est pas possible.

    Sauf que mon chef me parle d'une extension Swig qui permettrait de réaliser cela et j'ai beau chercher, je ne trouve rien

  4. #4
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Pas de swig pour générer du C++ (à la limite du C mais je crois que ce n'est encore que dans les cartons). Ça n'a aucun sens.

    Soit tu fais une façade pour ne proposer que les services de la librairie qui t'intéressent. Soit tu isoles la partie de code qui utilise la librairie. Soit tu acceptes d'être totalement dépendant de cette librairie. Mais pas de swig pour générer du C++ à partir de C++.

  5. #5
    Invité régulier
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 6
    Points
    6

    Par défaut

    Ok pas de C++ à partir de C++ dans Swig, merci c'est ce que je voulais savoir

    Sinon si si ça a du sens mais j'arrive peut-être pas à l'expliquer convenablement, en tout cas dans mon code il y a déjà des wrapper autour de plusieurs librairies (c'est pas moi qui les ai faits )

    En fait un peu partout dans mon code il y a des appels de fonctions de cette fameuse librairie et donc toutes les parties du code qui appellent ces fonctions sont dépendantes directement de cette librairie, ce que je dois faire c'est encapsuler toutes ces fonctions, les réunir dans un wrapper, ensuite tous les appels de fonctions appelleront la fonction correspondante du wrapper (et non de la librairie), ainsi le code dépendra uniquement du wrapper mais SEUL le wrapper dépendra directement de la librairie. Voilà c'est peut-être plus clair.

    Bon du coup faut que je me tape le travail d'encapsulation manuellement, bah j'en ai pour 3 mois là

    Merci, bonne journée.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •