Я просто пытаюсь использовать пример ruby, который оборачивает класс из пакета библиотеки SWIG. Вот что я сделал:
Проблема, с которой я столкнулся, заключается в том, что я не могу использовать прикрепленный скрипт ruby, чтобы связать его с dll и использовать его. Вот рубиновый файл:
# file: runme.rb
# This file illustrates the C++ interface created by SWIG.
# All of our C++ classes get converted into Ruby classes.
require 'D:/Work/TUS_Work/temp/SWIG/class/example'
# ----- Object creation -----
print "Creating some objects:\n"
c = Example::Circle.new(10)
print " Created circle #{c}\n"
s = Example::Square.new(10)
print " Created square #{s}\n"
# ----- Access a static member -----
print "\nA total of #{Example::Shape.nshapes} shapes were created\n"
# ----- Member data access -----
# Set the location of the object
# Notice how we can do this using functions specific to
# the 'Circle' class.
c.x = 20
c.y = 30
# Now use the same functions in the base class
s.x = -10
s.y = 5
print "\nHere is their current position:\n"
print " Circle = (", c.x, ",", c.y, ")\n"
print " Square = (", s.x, ",", s.y, ")\n"
# ----- Call some methods -----
print "\nHere are some properties of the shapes:\n"
for o in [c, s]
print " #{o}\n"
print " area = ", o.area, "\n"
print " perimeter = ", o.perimeter, "\n"
end
# Notice how the Shape#area() and Shape#perimeter() functions really
# invoke the appropriate virtual method on each object.
print "\n", Example::Shape.nshapes," shapes remain\n"
print "Goodbye\n"
Ошибка, которую я получаю после запуска интерпретатора ruby с этим файлом в качестве параметра:
ruby.exe -I. runme.rb
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
D:/Work/TUS_Work/temp/SWIG/class/example (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from runme.rb:6:in `<main>'
Я создал файл example.rb внутри, который был «найден» и загружен, но dll не найден, даже если я укажу полный путь и / или расширение файла.
Кто-нибудь еще испытывал эту проблему и нашел решение? Я думаю, что причина в том, что ruby версии 1.9.x, возможно, изменил API и потерял совместимость со старым кодом, поэтому этот простой пример больше не работает. Но я пока не смог найти ответ на эту проблему.