栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Go(golang)中编写Ruby扩展

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Go(golang)中编写Ruby扩展

Go
1.5添加了对构建共享库的支持,这些共享库可从C(因此可以通过FFI从Ruby)调用。这使该过程比1.5版之前的版本(需要编写C胶合层)更容易,并且现在可以使用Go运行时,这在现实生活中实际上是有用的(以前无法进行goroutine和内存分配,因为它们需要Go运行时,如果Go不是主要入口点,则该运行时将无法使用)。

goFuncs.go:

package mainimport "C"//export GoAddfunc GoAdd(a, b C.int) C.int {    return a + b}func main() {} // Required but ignored

请注意,

//export GoAdd
每个导出的功能都需要注释。之后的符号
export
是函数的导出方式。

goFromRuby.rb:

require 'ffi'module GoFuncs  extend FFI::Library  ffi_lib './goFuncs.so'  attach_function :GoAdd, [:int, :int], :intendputs GoFuncs.GoAdd(41, 1)

该库构建有:

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

运行Ruby脚本会产生:

42


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号