Использование внешних библиотек в Ruby - PullRequest
2 голосов
/ 12 марта 2011

Я скомпилировал библиотеку (GDAL), написанную на C / C ++ с привязками Ruby.

После запуска make install он был установлен под

/Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0/

Там есть каталог под названием "gdal" с четырьмя файлами внутри: gdal.so, gdalconst.so, ogr.so, osr.so

Теперь я хочу использовать эти библиотеки в моем проекте. Проблема в том, что когда я пытаюсь ссылаться на эти файлы

требуется 'gdal / gdal'

Я получаю

LoadError: нет такого файла для загрузки - GDAL / GDAL от : 29: в require' from <internal:lib/rubygems/custom_require>:29:in require 'from (irb): 1 из /Users/igor/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in ` '

Когда я запускаю ruby -e 'puts $:', я получаю следующий вывод:

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / site_ruby / 1.9.1

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / site_ruby / 1.9.1 / x86_64-darwin10.6.0

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / site_ruby

/ Users / igor / .rvm / rubies / ruby-1.9.2-p136 / lib / ruby ​​/ vendor_ruby / 1.9.1

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / vendor_ruby / 1.9.1 / x86_64-darwin10.6.0

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / vendor_ruby

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / 1.9.1

/ Users / игорь / .rvm / рубины / рубиново-1.9.2-P136 / Библиотека / рубин / 1.9.1 / x86_64-darwin10.6.0

Есть идеи, почему у меня это не работает?

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Похоже, вы не используете файл extconf.rb, чтобы помочь вам сгенерировать ваш make-файл. Возможно, вы захотите прочитать этот учебник и проверить Rice , если хотите написать расширение C ++. (Ruby написан на C, и вам нужно предоставить C API, Rice делает это проще).

1 голос
/ 15 марта 2011

После make install на OS X у вас должен быть .bundle файл на вашем пути /Users/igor/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0.

Если вы хотите использовать его тогда, вам просто нужно require 'gdal', и оно должно подойти.

0 голосов
/ 22 марта 2011

Спасибо, ребята, за ваши предложения.Я наконец-то понял проблему.Кажется, проблема в том, что я использовал rvm для управления версиями ruby.Как только я переключился на настройку системы по умолчанию (rvm use system), все работало хорошо.

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