Android NDK:使用适用于 Android 的 libpcap 编译错误 - 函数“未在此范围内声明”
我正在尝试将 Jnetpcap (带有 JNI 的 libpcap 的 java 包装器)移植到 Android。我已成功使用此存储库中的源代码将 libpcap 编译为静态库: https://github.com/ android/platform_external_libpcap 并且我获得了 libpcap.a
当尝试将 Jnetpcap 编译为共享库(并与 libpcap.a 链接)时,我收到错误,因为某些 libpcap 的函数“未在此范围内声明”。 这些函数是:pcap_create()、pcap_activate()、pcap_can_set_rfmon()、pcap_set_buffer_size()、pcap_set_promisc()、pcap_set_snaplen() 和 pcap_set_timeout()。
这些函数存在于 libpcap 的原始版本(libpcap-dev 包提供的版本)中,但似乎 android 版本没有它们。 Jnetpcap 的相同源文件可以为 intel x86 和 x64 平台编译,没有问题。
我做错了什么吗?这些功能真的缺失了吗?
我希望你们中的任何人都知道如何解决这个问题。谢谢。
I'm trying to port Jnetpcap (a java wrapper for libpcap with JNI) to Android. I've managed to compile libpcap as a static library using the source code in this repository: https://github.com/android/platform_external_libpcap and I obtained libpcap.a
When trying to compile Jnetpcap as a shared library (and linking with libpcap.a) I'm getting errors because some libpcap's functions "weren't declared in this scope".
Those functions are: pcap_create(), pcap_activate(), pcap_can_set_rfmon(), pcap_set_buffer_size(), pcap_set_promisc(), pcap_set_snaplen() and pcap_set_timeout().
Those functions exist in the original version of libpcap (the one which the packet libpcap-dev provides) but seems that the android's version doesn't have them. The same source files of Jnetpcap can be compiled for intel x86 and x64 platforms without problems.
Am I doing something wrong? Are those functions really missing?
I hope any of you guys know how to fix this. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不幸的是,libpcap 0.9.8 版本似乎不支持这些功能。版本 >= 1.0.0 包含它们。所以现在你有两种可能性。通过对旧版本的 Android.mk 进行一些修改来编译新版本的 libpcap 以包含新文件。或者将 jnetpcap 降级到支持旧 libpcap 的版本。 Libpcap 0.9.8 是 2007 年的版本,所以您也应该选择今年左右的 jnetpcap。
Unfortunately it looks like that version 0.9.8 of libpcap doesn't support these functions. Versions >= 1.0.0 contains them. So right now you have 2 possibilities. Compile newer version of libpcap by modification Android.mk for old version a little to include new files. Or downgrade jnetpcap to version that support old libpcap. Libpcap 0.9.8 if from 2007 so you should choose jnetpcap from around this year as well.