shared.go
package main
import "C"
//export add
func add(a, b int) int {
return a + b
}
//export append_str
func append_str(a, b *C.char) *C.char {
merge := C.GoString(a) + C.GoString(b)
return C.CString(merge)
}
//go build -buildmode=c-shared -o demo.so shared.go
func main() {
}
python
# https://www.cxyzjd.com/article/weixin_37989267/108869265
import ctypes
lib = ctypes.cdll.LoadLibrary('/home/xxx/projects/golang/demo/demo.so')
result = lib.add(2020, 1)
print(result)
# 调用go模块
go_append_str = lib.append_str
# 显式声明参数和返回的期望类型
go_append_str.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
go_append_str.restype = ctypes.c_char_p
result_bytes = go_append_str("测试".encode("utf-8"),'数据'.encode("utf-8"))
result = result_bytes.decode("utf-8")
print(result)