go编译so库让python引用编译后没有.h文件的问题

 更新时间:2024年02月11日 10:42:21   作者:战争迷雾  
有时python需要引用go的一些开源库,这时就需要go编译成python可调用的库,本文给大家介绍了go编译so库让python引用,编译后没有.h文件的问题,需要的朋友可以参考下

有时python需要引用go的一些开源库,这时就需要go编译成python可调用的库

go代码

package main//包必须是main

import(
	"C"//需要C库的支持,方便类型转换
)

func main(){}

//非常重要,export 表示把go的函数映射到python的函数调用
//如果没有export,那么就不能生成.h文件,python也就无法调用该函数

//export HelloWorld
func HelloWorld() *C.char {
	return C.CString("i'm zero wood")
}

非常重要,export 表示把go的函数映射到python的函数调用
如果没有export,那么就不能生成.h文件,python也就无法调用该函数

go编译成python调用库,编译环境是ubuntu18.04.1 LTS

编译命令

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

会生成testpythoncall.h testpythoncall.so文件

之后是python调用testpythoncall.so中的函数

import ctypes

lib = ctypes.CDLL("./testpythoncall.so")

helloWorld = lib.HelloWorld

helloWorld.restype = ctypes.c_char_p

print(helloWorld())

到此这篇关于go编译so库让python引用编译后没有.h文件的问题的文章就介绍到这了,更多相关go编译so库没有.h文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • go语言分布式id生成器及分布式锁介绍

    go语言分布式id生成器及分布式锁介绍

    这篇文章主要为大家介绍了go语言分布式id生成器及分布式锁介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 聊聊go xorm生成mysql的结构体问题

    聊聊go xorm生成mysql的结构体问题

    这篇文章主要介绍了go xorm生成mysql的结构体问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-03-03
  • Go语言使用Cobra实现强大命令行应用

    Go语言使用Cobra实现强大命令行应用

    Cobra是一个强大的开源工具,能够帮助我们快速构建出优雅且功能丰富的命令行应用,本文为大家介绍了如何使用Cobra打造强大命令行应用,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Go语言中比较两个map[string]interface{}是否相等

    Go语言中比较两个map[string]interface{}是否相等

    本文主要介绍了Go语言中比较两个map[string]interface{}是否相等,我们可以将其转化成顺序一样的 slice ,然后再转化未json,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Golang编程实现删除字符串中出现次数最少字符的方法

    Golang编程实现删除字符串中出现次数最少字符的方法

    这篇文章主要介绍了Golang编程实现删除字符串中出现次数最少字符的方法,涉及Go语言字符串遍历与运算相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • go语言中的return语句

    go语言中的return语句

    这篇文章主要介绍了go语言中的return语句,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-05-05
  • Go语言并发技术详解

    Go语言并发技术详解

    这篇文章主要介绍了Go语言并发技术详解,本文讲解了goroutine、channels、Buffered Channels、Range和Close等内容,需要的朋友可以参考下
    2014-10-10
  • 基于Golang实现统一加载资源的入口

    基于Golang实现统一加载资源的入口

    当我们需要在 main 函数中做一些初始化的工作,比如初始化日志,初始化配置文件,都需要统一初始化入口函数,所以本文就来编写一个统一加载资源的入口吧
    2023-05-05
  • golang中为什么Response.Body需要被关闭详解

    golang中为什么Response.Body需要被关闭详解

    这篇文章主要给大家介绍了关于golang中为什么Response.Body需要被关闭的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 深入理解Go语言中的数组和切片

    深入理解Go语言中的数组和切片

    Go语言中的数组大概相当与C/C++中的数组,固定大小,不能够动态扩展大小,而切片大概相当与C++中的Vector,可以动态扩展大小,当大小超过容量时,重新分配一块内存,然后将数据复制到新的内存区域。下面我们通过几个问题来更好理解golang 的数组和切片,一起来看看吧。
    2016-09-09

最新评论