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;

这样就可以了。

猜你喜欢

转载自blog.csdn.net/tusong86/article/details/107731487