[[https://www.swig.org/|Site web]] [[https://github.com/swig/swig|Github]] ====Utilisation de base==== // Nom de la librairie de sortie %module mod %{ // Inclure tous les entêtes à convertir #include "file1.h" #include "file2.h" #include "file3.h" } // Inclure tous les entêtes à convertir en commençant par un % %include "file1.h" %include "file2.h" %include "file3.h" ====template==== Pour les ''template'', il faut les définir manuellement entre le ''%include'' qui le défini et le ''%include'' qui l'utilise. Il y a donc un problème si le ''template'' est défini et utilisé dans le même entête. %module mod %{ #include "file1.h" #include "file2.h" } // file1.h contient une classe file1_classe %include "file1.h" %template(file1_classe_int) file1_classe; // file2.h utilise une implémentation de file1_classe. %include "file2.h" ====Can't wrap 'xxx' unless renamed to a valid identifier.==== C'est le cas des opérateurs ''operator !=''. Ajouter en début de fichier après le ''%module ...'' %rename(operator_not_equal) operator!=; ====Multiple inheritance is not supported in==== Ajouter après ''%module'' : %include Soit la ClasseA class ClassA : public Number, public Base {} Ajouter: %interface_impl(Number); %include "number.h" %interface_impl(Base); %include "base.h" %rename(base_int_ren) Base; %template(base_int) Base; Je n'ai pas testé mais je conseille de mettre un nom différent lors du ''rename'' et du ''template''. Si ''Number'' possède un parent, ce parent doit aussi être déclaré en interface. Par contre, il y a un soucis si une classe avec template doit être déclarée en interface : %interface_impl(InterfaceVisitable); // Nécessaire car swiginterface.i fait NomDeLaClasseAvecTemplateImplSwigImpl. // InterfaceVisitableSwigImpl est logiquement invalide sans rename %rename(interface_visitable_number_ren) InterfaceVisitable; // Mais lors de la déclaration du %template, c'est l'échec. %template(interface_visitable_number) InterfaceVisitable J'ai le résultat : Error: The interface feature name 'interface_visitable_number_ren' for proxy class 'interface_visitable_number_ren' is already defined in the generated target language module in scope ''.