2011-03-29 7 views
0

Android에 Jnetpcap (JNI가있는 libpcap 용 Java 래퍼)를 이식하려고합니다. libpcap을이 저장소의 소스 코드를 사용하여 정적 라이브러리로 컴파일했습니다. https://github.com/android/platform_external_libpcap 및 libpcap.a를 얻었습니다.Android NDK : Android 용 libpcap을 사용하여 컴파일 오류 - 함수가 "이 범위에서 선언되지 않았습니다"

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 패킷이 제공하는 것)에 있지만, 안드로이드의 버전에는없는 것으로 보입니다. Jnetpcap의 동일한 소스 파일을 Intel x86 및 x64 플랫폼 용으로 문제없이 컴파일 할 수 있습니다.

내가 잘못 했나요? 그 기능은 정말 실종 되었습니까?

여러분 중 누구든이 문제를 해결할 수 있기를 바랍니다. 감사.

답변

0

libpcap 0.9.8 버전은 이러한 기능을 지원하지 않습니다. 버전> = 1.0.0에 포함되어 있습니다. 그래서 지금 당신에게는 2 가지 가능성이 있습니다. 새 버전의 libpcap을 이전 버전의 Android.mk로 수정하여 새 파일을 포함시킵니다. 또는 jnetpcap을 이전 libpcap을 지원하는 버전으로 다운 그레이드하십시오. 2007 년 Libpcap 0.9.8이면 올해 jnetpcap을 선택해야합니다.

+0

도움 주셔서 감사합니다. 나는 Jnetpcap 1.2로 다운 그레이드했고 libpcap 0.9.8에서 작동했다. 몇 가지 테스트를하고 있지만 Android 용 Jnetpcap 1.2의 작동 포트가있는 것으로 보입니다. 앱을 루트로 실행할 수 없지만 구문 분석 기능이 제대로 작동해야하기 때문에 실시간 캡처를 지원하지 않습니다. – Jimix

관련 문제