Android NDK:使用适用于 Android 的 libpcap 编译错误 - 函数“未在此范围内声明”

发布于 2024-10-27 10:20:28 字数 649 浏览 6 评论 0原文

我正在尝试将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一人独醉 2024-11-03 10:20:28

不幸的是,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文