go编译.so文件在python中执行-阿里云开发者社区

开发者社区> 开发与运维> 正文

go编译.so文件在python中执行

简介: 在python中调用go代码

go代码

package main

import(
    "C"
)

func main(){}

// 上面都是固定的,需要其他包的话自行导入

// 定义函数,可定义多个,每个函数都要export
//export HelloWorld
func HelloWorld(info *C.char) *C.char {

    GoStr := C.GoString(info)
    GoStr += "123"

    return C.CString(GoStr)
}

编译

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

编译后生成hello.so和hello.h,python中只需要so文件。

pythob中调用

# python3

import os
from ctypes import cdll, c_char_p

# 导包
lib = cdll.LoadLibrary(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'hello.so'))

# 获取函数
hello = lib.HelloWorld

hello.argtype = c_char_p
hello.restype = c_char_p

# 调用
print(hello(b"guido"))

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章