加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Go(golang)中编写Ruby扩展

发布时间:2020-12-16 09:43:52 所属栏目:大数据 来源:网络整理
导读:有没有一些教程或实践经验教训如何编写一个扩展的Ruby在Go? Go 1.5增加了对构建可从C调用的共享库(从而通过FFI从Ruby调用)的支持。这使得该过程比在1.5之前的版本(当需要编写C粘合层时)更容易,并且Go运行时现在可用,使得这在实际中是有用的(goroutine和内
有没有一些教程或实践经验教训如何编写一个扩展的Ruby在Go?
Go 1.5增加了对构建可从C调用的共享库(从而通过FFI从Ruby调用)的支持。这使得该过程比在1.5之前的版本(当需要编写C粘合层时)更容易,并且Go运行时现在可用,使得这在实际中是有用的(goroutine和内存分配在之前是不可能的,因为他们需要Go运行时,如果Go不是主入口点,这是不可用的)。

goFuncs.go:

package main

import "C"

//export GoAdd
func GoAdd(a,b C.int) C.int {
    return a + b
}

func main() {} // Required but ignored

注意,//导出GoAdd注释是每个导出函数所必需的;导出后的符号将如何导出函数。

goFromRuby.rb:

require 'ffi'

module GoFuncs
  extend FFI::Library
  ffi_lib './goFuncs.so'
  attach_function :GoAdd,[:int,:int],:int
end

puts GoFuncs.GoAdd(41,1)

库由以下内容构建:

go build -buildmode=c-shared -o goFuncs.so goFuncs.go

运行Ruby脚本产生:

42

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读