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
相关推荐
PMJ0 2020-10-13
longzhiwen 2020-09-06
yangxingstar 2020-08-31
LUCIEN0 2020-08-17
huangzihao00 2020-08-17
Jan 2020-08-17
AndesStay 2020-06-12
afengxg 2020-06-09
zamesking 2020-06-09
afengxg 2020-06-09
何志文 2020-06-09
teresalxm 2020-06-05
何志文 2020-05-16
何志文 2020-05-11
fsl 2020-05-04
JOO 2020-04-26
倩 2020-04-22
afanti 2020-04-19
始终不够 2020-04-10