Supposons que je souhaite appeler une ou plusieurs fonctions de bibliothèque d'amplification à partir du code Ruby. Il y a beaucoup d'exemples de fois où je voudrais faire ceci, mais plus récemment je veux employer la bibliothèque de graphique de poussée pour le traitement efficace de graphique. Je pense que la façon la plus souvent suggérée de le faire est d'utiliser SWIG. Est-ce que quelqu'un a traversé et généré des wrappers SWIG pour la bibliothèque Boost? Est-ce en fait le meilleur moyen d'interopérer avec Boost? Quelles parties de Boost ne sont pas accessibles via SWIG car elles nécessitent des fonctionnalités C++ non supportées pour fonctionner?Appel Boost de Ruby via SWIG?
Répondre
Je ne peux pas dire que j'ai généré des wrappers pour les bibliothèques Boost spécifiquement, mais je l'ai fait pour mes propres classes modélisées.
Ceci est parfaitement faisable tant que vous gardez à l'esprit que SWIG encapsulera des instanciations de gabarit spécifiques en utilisant la directive %template
.
Comme il est indiqué dans la documentation liée ci-dessus:
[...] un modèle C++ nu ne définit pas une sorte d'objet code exécutable pour lequel SWIG peut normalement créer une enveloppe. Par conséquent, pour envelopper un modèle, vous devez fournir des informations SWIG sur une instanciation de modèle particulière (par exemple,
vector<int>
,array<double>
, etc.). Deuxièmement, un nom d'instanciation tel quevector<int>
n'est généralement pas un nom d'identificateur valide dans la plupart des langues cibles. Ainsi, vous devrez donner à l'instanciation du modèle un nom plus approprié tel queintvector
lors de la création d'un wrapper.
Avec la directive votre intvector
ressemblerait à quelque chose comme ceci:
%template(intvector) vector<int>;
- 1. wrapping boost :: ublas avec swig
- 2. Appel d'une fonction boost :: function via boost :: function_base
- 3. boost Emballage :: shared_ptr en PHP en utilisant SWIG
- 4. Utilisation de blocs Ruby de C avec SWIG
- 5. Intégration de Ruby dans une application C++ en utilisant SWIG?
- 6. Appel d'une fonction Python en C++ avec Swig
- 7. appel de Flex à Ruby
- 8. appel système Ruby
- 9. Fonction appel convention avec boost :: function_types
- 10. c struct carte à ruby en utilisant SWIG
- 11. Ruby, C++, Swig certaines classes ne sont pas exportées
- 12. Passer des variables entre C++ et Lua via Swig
- 13. Polymorphisme à travers C++ et Ruby utilisant SWIG
- 14. Génération de liaisons SWIG avec CMake
- 15. boost :: handshake asio via un proxy http?
- 16. Ruby relative_path_from appel sur Windows
- 17. Ruby: ProC# appel vs rendement
- 18. Appel IBActions via différents XIBs
- 19. Appel de fonction virtuelle C++ versus boost :: appel de fonction speedwise
- 20. Appel de GetGUIThreadInfo via P/Invoke
- 21. Appel de repos Amazon via Android
- 22. Appel de ONC RPC à partir de Ruby?
- 23. Emballage C struct avec SWIG
- 24. Classes C++ de swig et de réfrence
- 25. stdout de l'extension PHP généré SWIG
- 26. Questions de fichier d'interface SWIG
- 27. LDAP via Ruby ou Rails
- 28. API Google Spreadsheets via Ruby
- 29. auto_ptr avec swig
- 30. Lua + SWIG Monkey Patching
Je pense aussi à accéder à la bibliothèque graphique Boost de Ruby. Avez-vous essayé? Si oui, il serait utile si vous pouvez me donner des informations à ce sujet. – sawa
Où vous êtes-vous retrouvés avec ça? –