我正在尝试将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的版本没有它们。可以毫无问题地为intel x86和x64平台编译Jnetpcap的相同源文件。
我做错了吗?这些功能真的丢失了吗?
我希望你们中的任何人都知道如何解决这个问题。感谢。
答案 0 :(得分:0)
不幸的是,看起来libpcap的0.9.8版本不支持这些功能。版本> = 1.0.0包含它们。所以现在你有2种可能性。通过修改旧版本的Android.mk来编译更新版本的libpcap,以包含新文件。或者将jnetpcap降级到支持旧libpcap的版本。如果从2007年开始,Libpcap为0.9.8,那么你也应该从今年左右开始选择jnetpcap。