nanopb 问题后记

 

整个过程起起伏伏.

1)理解options文件的作用,把repeat和string类型编为定长或定数的类型,max_size,max_count,

2)理解any类型的protobuf3中的含义,type_url及value,

3)理解encode/decode中的callback调用,这个直接入手比较困难,因为是在源码中回调的,可参考源码test文件夹下的alltype测试案例,以及https://github.com/andy001847/nanopb 例子。

4)为了测试服务器,在linux下参考network例子写个测试代码,学习了docker/vsbuildbox及vs2019 linux编程。总体感觉还不错。但是相关文档较少,编译前有很多error,但因为是发布在linux上编译,居然能编译执行,但很多error看着还是不太舒服。

可以参考 https://www.cnblogs.com/apocelipes/p/10899484.html

5)原本在target为window上编译成功,测试OK,后改为target linux后就失败,发现callback中的数据被改掉了;

后发现是函数参数类型不匹配,在linux C下似乎更严格要求绝对一致。win下没有警告,但就是可以,而linux下可以则出现了类型不匹配导致数据被修改的情况。可能是编译器不一致,也可能是linux下错误太多而忽略了这个警告。总之,花了很长时间才发现问题,修正。

完毕。

你可能感兴趣的:(docker,linux,protocol)