调用cython共享库时未定义引用错误

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

源代码很简单,但是我无法构建go程序。

add.pyx

#cython: language_level = 3
def add(int x, int y):
    return x + y

add.h

#ifndef ADD_H
#define ADD_H
int add(int x, int y);
#endif

我使用 'cython --embed -o add.c add.pyx' 创建 add.cand 使用 'gcc -shared -pthread -fPIC -O2 -Wall -fno-strict-aliasing -o libadd.so 添加。 c -I/usr/local/include/python3.10 -L/usr/local/lib/ -lpython3.10' 创建 libadd.so

main.go


package main
/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -ladd
#include "add.h"
*/
import "C"import "fmt"
func main() {
    a:= C.int(2)
    b:= C.int(3)
    result := C.add(a, b)
// 打印结果fmt.Println(C.int(result))

}

运行go build -o main main.go时,出现如下错误:/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1/tmp/go-link-1701847393/000001。 o: function _cgo_0825df845a61_Cfunc_addTwo' 内: /tmp/go-build/cgo-gcc-prolog:54: add' undefined reference tocollect2: error: ld returned 1 exit status

希望go文件可以建好,我运行main的时候会输出结果5

go shared-libraries cython
© www.soinside.com 2019 - 2024. All rights reserved.