Отсутствующие функции в ruby ​​1.8 - PullRequest
2 голосов
/ 18 мая 2010

У меня есть рубиновый камень, который я разработал с помощью ruby ​​1.9, и он работает. Тем не менее, с ruby ​​1.8 он говорит об этом, когда я пытаюсь запустить его:

dyld: lazy symbol binding failed: Symbol not found: _RBIGNUM_SIGN
  Referenced from: /Users/Adrian/Desktop/num_to_bytes/ext/num_to_bytes/num_to_bytes.bundle
  Expected in: flat namespace

dyld: Symbol not found: _RBIGNUM_SIGN
  Referenced from: /Users/Adrian/Desktop/num_to_bytes/ext/num_to_bytes/num_to_bytes.bundle
  Expected in: flat namespace

Trace/BPT trap

Если я закомментирую строку, которая использует RBIGNUM_SIGN, он жалуется на другие функции, такие как rb_big_modulo. Некоторые вещи работают, как NUM2LONG. Вот некоторые вещи, которые я пробовал:

  • In http://github.com/ruby/ruby/blob/ruby_1_8_7/ruby.h, RBIGNUM_SIGN. Но во всех версиях ruby ​​я пробовал, его там нет.
  • Я догадался, что, возможно, это было определено в другом файле .h. Зная, что Hpricot работает с 1.8, я посмотрел на http://github.com/hpricot/hpricot/blob/master/ext/hpricot_scan/hpricot_scan.h. Он не включает никаких других файлов, которые #define его.
  • Помещение таких вещей, как extern VALUE rb_big_modulo(VALUE x); в начало моего расширения, не помогает.
  • Используя совершенно новую установку Ubuntu, я apt-get ted ruby ​​попытался установить гем, но он тоже не сработал.
  • Вставка have_library 'ruby', 'rb_big_modulo' в мой extconf.rb не сработала.

Как вы, наверное, видите, я впадаю в отчаяние (после нескольких недель попыток!). Итак, как мне заставить это работать?

Вот этот камень: http://rubygems.org/gems/num_to_bytes

Вот источник: http://gist.github.com/404584

Ответы [ 2 ]

0 голосов
/ 19 мая 2010
  • Для RBIGNUM_SIGN, определить его снова в источнике.
  • Для rb_big_modulo(x, y) используйте rb_funcall(x, '%', 1, y).
0 голосов
/ 18 мая 2010

Вы можете попробовать запросить backports драгоценный камень. Это обеспечивает некоторые функциональные возможности более новых версий ruby ​​для старых интерпретаторов ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...