Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配

这两天维护的一个项目,使用arm64-v8a指令集编译时遇到了报错,提示类型不匹配,具体报错的代码【脚本根据C++源文件生成的中间文件】如下:

cpp 复制代码
 const google::protobuf::RepeatedField<unsigned long long>& ret = cobj->equips();

C++源代码:

cpp 复制代码
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脚本了

调整之后的脚本如下:

运行脚本,生成的最新代码如下:

cpp 复制代码
const google::protobuf::RepeatedField< ::google::protobuf::uint64 >& ret = cobj->equips();

至此类型匹配,编译测试OK!!!

至于为什么解析时未按照原来的类型记录,我就不纠结了。。。