无法在我的 python 文件中使用 go 共享库

问题描述 投票:0回答:1

我有一个名为

main.go
的文件,它定义了一个名为
test
的函数。 我希望能够从我的 python 脚本中调用这个函数。

main.go

package main

import "C"

// export test
func test() int {
    return 1
}

func main() {}

编译:

go build -o lib.so -buildmode=c-shared main.go 

main.py

import ctypes

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


result = mylib.test()


print(result)

当我运行 python 程序时,出现此错误:

AttributeError: ./lib.so: undefined symbol: test

我错过了什么?

Go版本

go version go1.21.3 linux/amd64

Python版本:

Python 3.10.12

我尝试更新Go(之前我有版本1.21.1)

python python-3.x go shared-libraries ctypes
1个回答
1
投票

一切都是正确的,除了

// export
有一个额外的空间会产生问题

package main

import "C"

//export test      <------ remove the extra space here
func test() int {
    return 1
}

func main() {}
python main.py

输出:

1
© www.soinside.com 2019 - 2024. All rights reserved.