现在的位置: 首页 > 综合 > 正文

对protobuf进行ndk编译 config.h文件修改部分

2013年11月29日 ⁄ 综合 ⁄ 共 822字 ⁄ 字号 评论关闭

ok,废话不多说了,正文开始

首先,android.mk文件与其它文件的区别之处

LOCAL_CPP_EXTENSION := .cc  .cpp 

因为protobuf的源文件是*.cc的,利用proto生成的文件也是*.cc的格式,所以需要把*.cc,*.cpp添加到LOCAL_CPP_EXTENSION 里面

接着利用上面博客里面说道的protobuf需要的文件添加到mk文件的LOCAL_SRC_FILES里面,注意路径就行,这点不在叙述

由于源文件里面用到了config.h,而这个文件是在VS工程目录下的,不在src/google/目录里面,所以需要把此文件copy到google目录里面(或者其子目录里面)

接着修改config.h文件,详细情况如下:

对protobuf进行ndk编译
最上面的红色区域为,非WIN32环境下需要的头文件和namespace

中间的红色区域注释掉,如果不注释掉的话,ndk编译的时候会报ndk里面的一个D:\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\include\backward\backward_warning.h文件找不到,其实这个文件是有的,具体为啥找不到,我不得而知,而且baidu和google也都没办法找到答案,好几个国外的网站上有这个问题,不过天朝和谐了,没办法查看。

第三个红色区域,为自己添加的宏,非win32环境需要用到pthread,源文件里面就是用这个宏来区别的

 

最后一点,设置LOCAL_C_INCLUDES的时候,一定要把之前config.h文件所在目录的路径包含进去,否则编译会找不到config.h文件

 

当所以上面的这些都搞定之后,那就用cgywin去ndk-build吧

我用真机测试过,收发协议正常。童鞋们有任何疑问欢迎留言(网上好难找到关于protobuf的ndk编译过程,上面的博客没有对config.h文件要修改进行说明,所以直接copy下去是不会通过的)。

抱歉!评论已关闭.