我正在尝试让Protobuf lib在Android中的Java和JNI层之间进行通信。我从here获得了源代码。所以我在Jni> Source_Sirectory中将其添加为源文件。现在,如果我执行 ndk-build 来生成 .so 文件,则会提示以下错误日志:
Select * from product
where name like "%abc%"
limit 50
UNION ALL
Select * from product
where name like "%xyz%"
limit 50
如果我在这里遗漏任何内容,有什么建议吗?
答案 0 :(得分:2)
Proto缓冲区生成的c / c ++代码依赖于google的支持代码,该代码与proto缓冲区编译器一起安装。这意味着你获得的所有c / c ++都依赖于protobuf的支持代码,这就是你得到链接错误的原因 - 显然你在生成共享对象时没有将google的原型缓冲支持库与其他链接资源链接起来。
我为JNI .so库创建了一个eclipse构建,在那里我向链接器添加了一个-lprotobuf标志,可以看到here (搜索makefile,然后滚动到链接器部分)。 希望这有帮助。