0

我想知道是否有人可以帮助解决此处已打开的问题:

https://github.com/technion/ruby-argon2/issues/1

具体来说,我发布了一个 gem,我收到了用户遇到问题的建议。加载我的 gem 时出现以下错误:

LoadError: cannot find 'argon2_wrap' library
from /Users/me/.rvm/gems/ruby-2.2.1/gems/ffi-compiler-0.1.3/lib/ffi-compiler/loader.rb:21:in `find'

我认为它极有可能是一个 OSX 问题,因为我已经尽了最大的努力来复制它并且没有成功。如果我没有实际编译共享库,该错误基本上显示了我的 Linux 机器上会发生什么。但是,我没有可用的 Mac,因此没有任何测试的能力。

我真的很想认真地支持这个宝石,任何能给我一些指点的人都会非常感激。

4

1 回答 1

1

成功!!!:-(

为什么一脸悲伤?因为这是一个 FFI 问题,我不知道如何解决它。

似乎路径的命名导致 FFI 库加载在 OS X 上失败。

我试过这个:

require 'ffi'
module Hello
    extend FFI::Library
    ffi_lib "Users/USERNAME/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/argon2-0.1.1/ext/argon2_wrap/libargon2_wrap.dylib"
end
 # => FAILS to load library

我将编译后的库复制到我的桌面并使用 FFI 和干净的路径加载它:

require 'ffi'
module Hello
    extend FFI::Library
    ffi_lib "/Users/USERNAME/Desktop/libargon2_wrap.dylib"
end
# => Success, the library loaded

现在我们知道问题出在哪里,我们或许可以通过 FFI 库帮助解决问题。

编辑

我会(很遗憾地说)尝试将 FFI 移植到Ruby 的核心fiddle。您可以在此处查看 Fiddle 教程

于 2015-12-02T00:06:51.973 回答