1

我正在尝试将 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 平台。

难道我做错了什么?这些功能真的缺失了吗?

我希望你们中的任何人都知道如何解决这个问题。谢谢。

4

1 回答 1

0

不幸的是,libpcap 0.9.8 版似乎不支持这些功能。版本 >= 1.0.0 包含它们。所以现在你有两种可能性。通过稍微修改旧版本的 Android.mk 以包含新文件来编译新版本的 libpcap。或者将 jnetpcap 降级到支持旧 libpcap 的版本。Libpcap 0.9.8 如果从 2007 年开始,那么您也应该从今年左右选择 jnetpcap。

于 2011-03-29T18:33:20.840 回答