cgo里面,字符数组的赋值

实际工作中,会碰到go调用c语言动态库,涉及到数组的赋值时,出现了问题,例如,c里面定义了如下结构:

typedef struct ANA_PROCESS_FRAME_
{
	ANA_PROCESS_FRAMETYPE nType;
	ANA_VIDEO_FRAME stVideoFrame;
	ANA_AUDIO_FRAME stAudioFrame;
	unsigned char byRes[128];
}ANA_PROCESS_FRAME;

在go语言中,如果用以下方式对ANA_PROCESS_FRAME里面的byRes赋值,则会出现编译不过的情况。

pInputFrame := new(C.ANA_PROCESS_FRAME);
C.strcpy(pInputFrame.byRes, C.CString("/home/wyg/GaitAnalyizeTool/AlgorithmAnaGait/fanmian1.mp4"))

这着实让人费解,好在找到了下面这样一种方式进行赋值,如下所示:

	mystr := "/home/wyg/GaitAnalyizeTool/AlgorithmAnaGait/fanmian1.mp4"
	arr := [128]C.uchar{} 
	for i:= 0; i < len(mystr) && i < 128; i++{
		arr[i] = C.uchar(mystr[i])
	} 
 
	pInputFrame := new(C.ANA_PROCESS_FRAME);
	pInputFrame.byRes = arr;

这样就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值