1 回答
TA贡献1859条经验 获得超6个赞
字符串到 char (*array)[]
cgo-gcc-prolog: error: array size is negative
使用垫片。例如,
so.go:
// string to char (*array)[]
package main
/*
#include <stdlib.h>
#include <stdio.h>
void notify(char (*message)[]) {
printf("notify | argv: %1$p %1$s\n", *message);
}
void shimmy(char *message[]) {
printf("shimmy | argv: %1$p %1$s\n", *message);
notify((char (*)[])*message);
}
*/
import "C"
import (
"fmt"
"unsafe"
)
func main() {
message := "My Message :)"
cs := C.CString(message)
defer C.free(unsafe.Pointer(cs))
fmt.Printf("main | argv: %p %s\n", cs, C.GoString(cs))
C.shimmy(&cs)
}
输出:
$ go run so.go
main | argv: 0x19cb820 My Message :)
shimmy | argv: 0x19cb820 My Message :)
notify | argv: 0x19cb820 My Message :)
$
$ go version
go version devel +4d5bb9c609 Fri Dec 20 23:07:52 2019 +0000 linux/amd64
$ go env CC
gcc
$ gcc --version
gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008
$
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报