2011-03-29 30 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

相關問題