这两天维护的一个项目,使用arm64-v8a指令集编译时遇到了报错,提示类型不匹配,具体报错的代码【脚本根据C++源文件生成的中间文件】如下:
const google::protobuf::RepeatedField<unsigned long long>& ret = cobj->equips();
C++源代码:
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
TankInfo::equips() const {
// @@protoc_insertion_point(field_list:data.TankInfo.equips)
return equips_;
}
可以看到生成中间代码时,定义参数的类型确实发生了变化,由::google::protobuf::uint64变成了unsigned long long,经过多次测试,发现脚本在解析.h时,类型便发生了改变,没办法只能调整generator.py脚本了
调整之后的脚本如下:
运行脚本,生成的最新代码如下:
const google::protobuf::RepeatedField< ::google::protobuf::uint64 >& ret = cobj->equips();
至此类型匹配,编译测试OK!!!
至于为什么解析时未按照原来的类型记录,我就不纠结了。。。