【发布时间】:2021-04-22 07:49:11
【问题描述】:
我正在尝试在 go 程序中使用 c 库中的 c 字符串,但出现错误:
a.h文件:
extern const char *s[];
a.c文件:
const char *s[] = {"a", "b", "c"};
我把这两个文件编译成liba.a
main.go文件:
package main
// #cgo LDFLAGS: -L${SRCDIR} -la
// #include"a.h"
import "C"
import "fmt"
func main() {
x := 1
fmt.Println(x)
fmt.Println(len(C.s))
fmt.Println(C.GoString(C.s[x]))
}
然后我用命令运行代码
go run main.go
我得到了错误:
panic: runtime error: index out of range [0] with length 0
如何解决?谢谢
go 版本:go version go1.15.7 linux/amd64
【问题讨论】:
-
不要在标题中添加标签。
-
你如何建立你的存档文件?为什么不使用对象(
.o) -
我使用命令
gcc -c -o a.o a.c && ar rcs liba.a a.o构建存档文件。我面临的问题是在go中使用c接口。如果我使用目标文件,则要链接的文件太多。