【问题标题】:How to call Go function from Python如何从 Python 调用 Go 函数
【发布时间】:2019-07-19 05:10:21
【问题描述】:

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

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() {}

【问题讨论】:

  • 您使用的是 Windows,您所遵循的教程使用的是 Linux/Unix。也许您可以在 Docker 容器或 VM 中应用本教程。
  • 请不要包含文字图片。它们很难阅读(如果您依赖屏幕阅读器,则无法阅读),并且它们不可搜索且无法编入索引。而是将文本直接复制并粘贴到问题中。

标签: python go .so


【解决方案1】:

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

所以我猜你需要:

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

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 2013-10-24
      • 2019-10-28
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 2011-02-13
      • 2013-12-22
      相关资源
      最近更新 更多