我是靠谱客的博主 快乐书本,最近开发中收集的这篇文章主要介绍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;

这样就可以了。

最后

以上就是快乐书本为你收集整理的cgo里面,字符数组的赋值的全部内容,希望文章能够帮你解决cgo里面,字符数组的赋值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部