从 Go 1.6 开始,这段代码:
argc := len(*argv)
c_argc := C.int(argc)
c_argv := make([]*C.char, argc)
for index, value := range *argv {
c_argv[index] = C.CString(value)
defer C.free(unsafe.Pointer(c_argv[index]))
}
err := C.MPI_Init(&c_argc, (***C.char)(unsafe.Pointer(&c_argv)))
不再工作并且失败了runtime error: cgo argument has Go pointer to Go pointer。我已经阅读了有关使用 malloc() 在 C 中分配数组然后复制所有内容的信息,但这很难做到(因为 argv 元素的长度不同,而且性能也很差
慕莱坞森
慕哥9229398
相关分类