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