IRB не загружается должным образом Dynami c библиотеки - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть пара динамических c библиотек, с которыми мне нужно взаимодействовать. Я использую ffi gem для этого.

Имя моего файла: "test.rb":

require 'ffi'

module Libs
  extend FFI::Library
  ffi_lib_flags :now, :global
  ffi_lib [Dir.pwd + '/beagle.dll']
  ffi_lib [Dir.pwd + '/cheetah.dll']
  ffi_lib [Dir.pwd + '/my_library.dll']
  attach_function :get_version [], :int
end

class MyLibClass
  include Libs
  def initialize
    @result = nil
  end

  def check_version
    @result = get_version()
  end
end

lib = MyLibClass.new
lib.check_version

my_library.dll использует функции из beagle.dll и cheetah.dll . Если я создаю объект и вызываю метод check_version для вызова get_version из библиотеки my_library.dll внутри файла ruby, все в порядке (я только что запустил ruby test.rb .) Но если я сделаю следующее с IRB, похоже, что beagle.dll / cheetah.dll загружен неправильно, поэтому при выполнении check_version я получаю сообщение об ошибке.

irb -I .
require './test.rb'
irb_lib = MyLibClass.new
irb_lib.check_version  # <- THIS FAILS

Am Мне нужно сделать дополнительный шаг в IRB, чтобы правильно загрузить библиотеки? Что-то мне не хватает?

...