【发布时间】:2011-03-12 01:26:04
【问题描述】:
我想创建一个调用我编写的 c 函数的 ruby gem。例如:
int func(int x)
{
return x * 2;
}
这将在我的 rubygem 的 c 文件中。然后我希望能够通过使用 ffi 接口将其包装在 ruby 中调用它:
module TestModule
extend FFI::Library
ffi_lib 'MyLib'
attach_function 'func', [:int], :int
end
但是我不确定如何设置它,以便在安装 gem 时,c 文件将编译成一个库(名称为“MyLib”),并且 ffi 将检测该库并将其用于上面的代码。
有谁知道如何做到这一点,或者有更好的方法吗?请注意,我宁愿不使用扩展 ruby 的标准方式(如 Pragmatic Programmer's Guide Extending Ruby section 中所述),因为它只能与标准 ruby 解释器一起使用(我相信)。
我一直在使用 jeweler 来构建我的宝石,如果这对这个问题很重要的话。
【问题讨论】: