2010-05-30 5 views
0

J'écris un module d'extension C/C++ pour d'autres langages et j'utilise SWIG pour générer les liaisons.Questions de fichier d'interface SWIG

J'ai deux questions

  1. Puis-je inclure plus de 1 fichier d'en-tête dans la partie de la déclaration du fichier d'interface par exemple:

    /* Déclarations exposées à wrapper: */

    > %{ 
    > #define SWIG_FILE_WITH_INIT 
    > #include "a.h" 
    > #include "b.h" 
    > #include "c.h" %} 
    
  2. Dans tous les exemples que j'ai vus jusqu'à présent, après la déclaration d'en-tête (comme indiqué ci-dessus), les fonctions déclarées dans l'en-tête sont ensuite déclarées à nouveau dans le fichier d'interface. Est-ce vraiment nécessaire, car cela signifie qu'il y a deux copies des déclarations de fonctions qui doivent être maintenues.

Note: Je peux comprendre que certaines déclaration fonctions/méthodes peut-être besoin d'être « décoré » avec la déclaration « newObject » si ceux-ci doivent évidemment être dans le fichier d'interface, pour éviter les fuites de mémoire - mais , J'aurais bien qu'il suffirait d'inclure les en-têtes et seulement les déclarations des fonctions/méthodes qui doivent être déclarées avec 'newobject' - est-ce une façon de faire?

Répondre

1
  1. Oui (voir http://www.swig.org/Doc1.1/HTML/Library.html)
  2. Non (voir http://www.swig.org/tutorial.html, chercher SWIG for the truly lazy)
+0

Pour la 2ème question, la réponse semble être un OUI au lieu d'un non (c.-à-je peux être paresseux , et juste inclure les en-têtes et ne pas redéclarer les prototypes de fonction) - Droit? – morpheous

+0

Vous êtes interprétation dans le commentaire est correct: vous "pouvez être paresseux, et juste inclure les en-têtes et ne pas redéclarer les prototypes de fonction", mais la réponse à la question ("Est-ce vraiment nécessaire", lors de la discussion des prototypes de fonctions) est un non. – Yktula

+0

merci pour la clarification :) – morpheous