我有一个名为
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)
一切都是正确的,除了
// export
有一个额外的空间会产生问题
package main
import "C"
//export test <------ remove the extra space here
func test() int {
return 1
}
func main() {}
python main.py
输出:
1