本文共 832 字,大约阅读时间需要 2 分钟。
ok,废话不多说了,正文开始
首先,android.mk文件与其它文件的区别之处
LOCAL_CPP_EXTENSION := .cc
因为protobuf的源文件是*.cc的,利用proto生成的文件也是*.cc的格式,所以需要把*.cc,*.cpp添加到LOCAL_CPP_EXTENSION 里面
接着利用上面博客里面说道的protobuf需要的文件添加到mk文件的LOCAL_SRC_FILES里面,注意路径就行,这点不在叙述
由于源文件里面用到了config.h,而这个文件是在VS工程目录下的,不在src/google/目录里面,所以需要把此文件copy到google目录里面(或者其子目录里面)
接着修改config.h文件,详细情况如下:
最上面的红色区域为,非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下去是不会通过的)。
转载地址:https://kaitiren.blog.csdn.net/article/details/9058549 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!