本文介绍了使用cgo时的多重定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
package main
/*
int add(int a, int b) {
return a + b;
}
*/
import "C"
import "fmt"
func main() {}
func Test1() {
fmt.Println(C.add(1, 3))
}
//export Test2
func Test2() {
}
编译程序:
dingrui@dingrui-PC:~/Projects/gotest/array$ go build -o libtest.so -buildmode=c-shared main.go
# command-line-arguments
/tmp/go-build043762604/b001/_x002.o: In function `add':
./main.go:5: multiple definition of `add'
/tmp/go-build043762604/b001/_x001.o:/tmp/go-build/main.go:5: first defined here
collect2: error: ld returned 1 exit status
如果我删除"//export Test2"行,则编译成功.
If I delete the "//export Test2" line, it compile successfully.
推荐答案
这篇关于使用cgo时的多重定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!