我正在尝试从 Ruby 调用 Go 项目。当我传递一个字符串并返回一个字符串时,它确实工作得很好:
去:
package main
import "C"
import (
"fmt"
"gitlab.com/gogna/gnparser"
)
//export ParseToJSON
func ParseToJSON(name *C.char) *C.char {
goname := C.GoString(name)
gnp := gnparser.NewGNparser()
parsed, err := gnp.ParseAndFormat(goname)
if err != nil {
fmt.Println(err)
return C.CString("")
}
return C.CString(parsed)
}
func main() {}
我用它编译
go build -buildmode=c-shared -o libgnparser.so main.go
红宝石:
require 'ffi'
# test
module GNparser
extend FFI::Library
if Gem.platforms[1].os == 'darwin'
ffi_lib './clib/mac/libgnparser.so'
else
ffi_lib './clib/linux/libgnparser.so'
end
attach_function :ParseToJSON, [:string], :string
end
puts GNparser.ParseToJSON("Homo sapiens L.")
对于这样的示例,如何将 Ruby 字符串数组传递给 Go 并返回一个字符串数组?(Go项目中有一个方法可以并行处理这样的数组)
四季花海
DIEA
相关分类