我想导入一个由 Cython 在 python 3.7 中生成的 c-shared-library,尝试通过 cgo 来完成。
在这种情况下:
go版本go1.12.7 linux/amd64
Python 3.7.3
Cython 版本 0.29.12
操作系统:Manjaro 18.0.4
内核:x86_64 Linux 5.1.19-1
我将继续:制作一个 python 文件vim pylib.pyx
:
#!python
cdef public void hello():
print("hello world!")
并运行python -m cython pylib.pyx生成 c-shared-library,我有两个文件,pylib.c以及pylib.h. 现在,尝试将它们导入到 golang,因此创建一个 go 文件vim test.go:
package main
/*
#include </usr/include/python3.7m/Python.h>
#include "pylib.h"
*/
import "C"
import "fmt"
func main() {
C.hello()
fmt.Println("done")
}
最后,我运行go run test.go:我有以下输出:
# command-line-arguments
/usr/bin/ld: $WORK/b001/_x002.o: in function `_cgo_51159acd5c8e_Cfunc_hello':
/tmp/go-build/cgo-gcc-prolog:48: undefined reference to `hello'
collect2: error: ld returned 1 exit status
我也尝试将其导入到 c 中,但遇到了类似的输出,如下所示:
undefined reference to `hello'
ld returned 1 exit status
我不知道该怎么办,请帮助我。:(
月关宝盒
相关分类