go編譯so庫讓python引用編譯后沒有.h文件的問題
有時(shí)python需要引用go的一些開源庫,這時(shí)就需要go編譯成python可調(diào)用的庫
go代碼
package main//包必須是main
import(
"C"http://需要C庫的支持,方便類型轉(zhuǎn)換
)
func main(){}
//非常重要,export 表示把go的函數(shù)映射到python的函數(shù)調(diào)用
//如果沒有export,那么就不能生成.h文件,python也就無法調(diào)用該函數(shù)
//export HelloWorld
func HelloWorld() *C.char {
return C.CString("i'm zero wood")
}
非常重要,export 表示把go的函數(shù)映射到python的函數(shù)調(diào)用
如果沒有export,那么就不能生成.h文件,python也就無法調(diào)用該函數(shù)
go編譯成python調(diào)用庫,編譯環(huán)境是ubuntu18.04.1 LTS
編譯命令
go build -buildmode=c-shared -o testpythoncall.so testpythoncall.go
會(huì)生成testpythoncall.h testpythoncall.so文件
之后是python調(diào)用testpythoncall.so中的函數(shù)
import ctypes
lib = ctypes.CDLL("./testpythoncall.so")
helloWorld = lib.HelloWorld
helloWorld.restype = ctypes.c_char_p
print(helloWorld())
到此這篇關(guān)于go編譯so庫讓python引用編譯后沒有.h文件的問題的文章就介紹到這了,更多相關(guān)go編譯so庫沒有.h文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang項(xiàng)目搭配nginx部署反向代理負(fù)載均衡講解
這篇文章主要為大家介紹了Golang項(xiàng)目搭配nginx部署正反向代理負(fù)載均衡講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
利用Go語言快速實(shí)現(xiàn)一個(gè)極簡任務(wù)調(diào)度系統(tǒng)
任務(wù)調(diào)度(Task Scheduling)是很多軟件系統(tǒng)中的重要組成部分,字面上的意思是按照一定要求分配運(yùn)行一些通常時(shí)間較長的腳本或程序。本文將利用Go語言快速實(shí)現(xiàn)一個(gè)極簡任務(wù)調(diào)度系統(tǒng),感興趣的可以了解一下2022-10-10
Golang中匿名組合實(shí)現(xiàn)偽繼承的方法
這篇文章主要介紹了Golang中匿名組合實(shí)現(xiàn)偽繼承的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
Go語言JSON數(shù)據(jù)返回的實(shí)戰(zhàn)案例
本文介紹用Go標(biāo)準(zhǔn)庫構(gòu)建返回JSON的HTTP接口,包括GET請求處理、JSON編碼及響應(yīng)設(shè)置,為RESTful API開發(fā)打下基礎(chǔ),感興趣的可以了解一下2025-08-08
windows下使用GoLand生成proto文件的方法步驟
本文主要介紹了windows下使用GoLand生成proto文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06

