Ruby, C ++, Swig некоторые классы не экспортируются - PullRequest
0 голосов
/ 25 февраля 2010

Я работаю над тем, чтобы моя библиотека c ++ Lavish работала с ruby, используя swig. Проблема в том, что могут использоваться только некоторые из классов, которые я включил в файл интерфейса, и я не получаю ошибок при компиляции пакета или загрузке в ruby. Мой файл интерфейса swig можно посмотреть здесь .

Пример того, что работает, а что нет.

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

Я могу создать объект Display в C ++, и я включил заголовок в файл интерфейса Swig, поэтому я не знаю, где искать что-то не так.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2010

Оказалось, что это было несколько проблем, во-первых, файл extconf.rb, который генерирует make-файл для оболочки swig, не пытался связать в фреймворке (swig требует обновленных документов для os x). Вторая проблема, с которой я столкнулся, заключалась в том, что ruby ​​выглядит как универсальный двоичный файл на снежном барсе, но хочет загрузить x86_64, а не версию i386 (см. Рисунок). Теперь я должен перекомпилировать все мои зависимости в универсальных фреймворках x86_64. Я уверен, что есть способ форсировать i386, но я бы предпочел 64-битную поддержку там, где это возможно.

0 голосов
/ 25 февраля 2010

Действительно ли библиотека скомпилирована? (А не только интерфейс SWIG обертки)

проблема динамического компоновщика ??? Программа не знает, где находится библиотека для вашей программы. Попробуйте установить LD_LIBRARY_PATH с вашим каталогом библиотеки.

...