J'ai travaillé sur l'obtention de ma bibliothèque C++ Lavish travaillant avec ruby utilisant swig. Le problème est que seules certaines des classes que j'ai incluses dans le fichier d'interface peuvent être utilisées et je ne reçois aucune erreur lors de la compilation du paquet ou du chargement dans ruby. Mon fichier d'interface de swig peut être consulté here.Ruby, C++, Swig certaines classes ne sont pas exportées
Un exemple de ce qui fonctionne et de ce qui ne marche pas.
sean$ irb
>> require "lavish"
=> true
>> v1 = Lavish::Vector2.new(1,2)
=> #<Lavish::Vector2:0x1011a25a0>
>> puts v1.x
1.0
=> nil
>> display = Lavish::Display.new
dyld: lazy symbol binding failed: Symbol not found: __ZN6lavish7DisplayC1Ev
Referenced from: /Users/seanc/Desktop/Lavish/samples/ruby/Tutorial 2 - Displaying A Triangle/lavish.bundle
Expected in: flat namespace
dyld: Symbol not found: __ZN6lavish7DisplayC1Ev
Referenced from: /Users/seanc/Desktop/Lavish/samples/ruby/Tutorial 2 - Displaying A Triangle/lavish.bundle
Expected in: flat namespace
Trace/BPT trap
je peux créer l'objet d'affichage en C++ et je l'ai inclus l'en-tête dans le fichier d'interface rasade donc je ne sais pas où chercher ce qui est faux.
Des idées?
Je sais qu'il ne peut pas trouver le symbole, mais s'il s'agissait d'un problème d'éditeur de liens alors que ruby ne parviendrait pas à charger la bibliothèque ou essayer de créer une autre classe de la même DLL ne fonctionnerait pas correctement. – user3705549
Juste pour plus de clarté c'est sur osx, snow léopard. J'ai construit la librairie C++ avec xcode et copié la structure résultante dans/Libraries/Frameworks. Lors de la compilation de la bibliothèque swig, il trouve la bibliothèque et les liens qui s'y rapportent sans problème. Je peux poster des journaux si nécessaire. – user3705549