2011-03-29 52 views
0

我试图将Jnetpcap(一个Java包装与libpcap与JNI)移植到Android。我已经设法将libpcap编译为静态库,使用此存储库中的源代码:https://github.com/android/platform_external_libpcap和我获得的libpcap.aAndroid NDK:使用libpcap为Android编译错误 - 函数“未在此范围内声明”

当试图将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版本没有它们。可以针对intel x86和x64平台编译相同的Jnetpcap源文件,而不会出现任何问题。

我做错了什么?这些功能是否真的缺失?

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

回答

0

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

+0

感谢您的帮助。我降级到Jnetpcap 1.2,它与libpcap 0.9.8一起工作。我正在进行一些测试,但似乎我已经有了适用于Android的Jnetpcap 1.2工作端口。 它不支持实时捕获,因为该应用程序不能作为root运行,但解析功能应该很好地工作。 – Jimix 2011-03-31 11:03:36