Ruby 使用 Fiddle 调用 C 函数

Ruby 使用 Fiddle 调用 C 函数

写一个c函数

split.c

double split(double num)
{
  double ret = 0;
  ret = num / 2;
  return ret;
}

编译成动态库

 gcc -o libsplit.so -shared split.c

在 split.rb 里调用 libsplit.so 里的 split 函数

require 'fiddle'

# Open the file
libsplit = Fiddle.dlopen('./libsplit.so')

# Load the `split` function
split = Fiddle::Function.new(
    libsplit['split'],
    [Fiddle::TYPE_DOUBLE], 
    Fiddle::TYPE_DOUBLE
)

# Call the `split` function
puts split.call(10) # => 5 
  • Fiddle.dlopen,与c中调用动态链接库方法名相同dlopen

  • Fiddle::Function.new 参数为 函数名,参数,返回值

还可以通过 Fiddle::Importer mixin提供的DSL

module Test
  extend Fiddle::Importer
  dlload './libsplit.so'
  extern 'double split(double)'
end

puts Test.split(10) # => 5 

links

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值