cocos2dx,ndk编译protobuf

本文介绍了如何在Cocos2d-x项目中利用protobuf作为跨语言通信协议,以提高效率并简化自定义协议的开发过程。通过详细步骤包括下载protobuf、NDK和cygwin,以及在Android.mk中配置编译,解决编译错误,并通过修改config.h文件来适配不同编译器的差异,实现了高效且便捷的通信解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

protobuf 是google的定义的一种跨语言间通信协议,比json和xml更加高效 ,

由于后台框架使用java,c++做前端展示,所以选定了protobuf 作为通信协议,免去了自定义协议的辛苦。


1.下载好protobuf 2.5,

2.下载好NDK,下载好cygwin

3,在cocos2dx生成的android下面的jni文件下 在Android.mk添加需要编译的protobuf文件。

LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/google/protobuf/io/coded_stream.cc                \
../../Classes/google/protobuf/stubs/common.cc                   \
../../Classes/google/protobuf/descriptor.cc                     \
../../Classes/google/protobuf/descriptor.pb.cc                  \
../../Classes/google/protobuf/descriptor_database.cc            \
../../Classes/google/protobuf/dynamic_message.cc                \
../../Classes/google/protobuf/extension_set.cc                  \
../../Classes/google/protobuf/extension_set_heavy.cc            \
../../Classes/google/protobuf/generated_message_reflection.cc   \
../../Classes/google/protobuf/generated_message_util.cc         \
../../Classes/google/protobuf/io/gzip_stream.cc                 \
../../Classes/google/protobuf/message.cc                        \
../../Classes/google/protobuf/message_lite.cc                   \
../../Classes/google/protobuf/stubs/once.cc                     \
../../Classes/google/protobuf/io/printer.cc                     \
../../Classes/google/protobuf/reflection_ops.cc                 \
../../Classes/google/protobuf/repeated_field.cc                 \
../../Classes/google/protobuf/service.cc                        \
../../Classes/google/protobuf/stubs/structurally_valid.cc       \
../../Classes/google/protobuf/stubs/strutil.cc                  \
../../Classes/google/protobuf/stubs/substitute.cc               \
../../Classes/google/protobuf/text_format.cc                    \
../../Classes/google/protobuf/io/tokenizer.cc                   \
../../Classes/google/protobuf/unknown_field_set.cc              \
../../Classes/google/protobuf/wire_format.cc                    \
../../Classes/google/protobuf/wire_format_lite.cc               \
../../Classes/google/protobuf/io/zero_copy_stream.cc            \
../../Classes/google/protobuf/io/zero_copy_stream_impl.cc       \
../../Classes/google/protobuf/io/zero_copy_stream_impl_lite.cc  \
 
../../Classes/google/protobuf/stubs/stringprintf.cc \

en

编译报错 ,

jni/../../Classes/google/protobuf/stubs/common.cc:48:2: error: #error "No suitable threading library available."jni/../../Classes/google/protobuf/stubs/common.cc:48:2: error: #error "No suitable threading library available."  这是为什么 请往下看

3.修改config.h文件

#define HASH_SET_H <ext/hash_set>
#define HASH_MAP_H <ext/hash_map>
#define HASH_NAMESPACE __gnu_cxx
#define HAVE_PTHREAD

定义这几个宏  先注示掉原文件中存在的 。 这里是vs编译器和g++编译器的差异


ok 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值