如何从Python调用Go函数

时间:2019-07-19 05:10:21

标签: python go .so

我正在尝试从python调用go lang函数 当我调用python程序时,出现以下错误。 我指的是Go to pythn链接。

error

Python程序

    from ctypes import *
    def call_go_function():

        lib = cdll.LoadLibrary("./awesome.so")
        lib.Add.argtypes = [c_longlong, c_longlong]
        print( lib.Add(12,99)) 

    call_go_function()   

执行程序

package main
import "C"
import (

"sync"
 )
 var count int
 var mtx sync.Mutex
 //export Add
 func Add(a, b int) int { return a + b }
 func main() {}

2 个答案:

答案 0 :(得分:1)

也许是环境。尝试运行一个简单的程序。

from ctypes import *
lib = cdll.LoadLibrary("./func.so")
r=lib.fun(10,20)
print(r)
package main
import "C"
//export fun
func fun(x int,y int) int{
    return x+y
}

func main(){}
>go build -o func.so -buildmode=c-shared func.go
>python test.py
30

答案 1 :(得分:0)

从Python路径看来,这是一个32位Python版本。您不能混合使用32位和64位用户空间代码。

所以我想您需要:

  • 将Go代码重建为32位DLL(请参阅GOARCH = 386)或
  • 安装并运行64位Python版本。