안드로이드에서 gnuradio 함수, 특히 밴드 패스 필터 함수에 액세스하려고합니다. 함수를 호출하지 않으면 ndk-build가 코드를 컴파일합니다. NDK 빌드에서안드로이드를 사용하는 C++에서 gnuradio에 대한 정의되지 않은 참조 NDK
오류 :이 특정 파일에 대한 내 Android.mk 파일에
error: undefined reference to 'gr_firdes::complex_band_pass(double, double, double, double, double, gr_firdes::win_type, double)' collect2: ld returned 1 exit status
나는 complex_band_pass (...) 함수를 호출 할 때, 그것은 나에게 정의되지 않은 참조의 오류를 제공합니다 :
#include <jni.h>
#include <cmath>
#include <math.h>
#include <vector>
#include <gr_firdes.h>
using namespace std;
static void attemptToAccessGnuRadio()
{
// gr_firdes is a class
gr_firdes gg;
// compiles without this line
gg.complex_band_pass(1.0, 24000.0, 100.0, 500.0, 1.0);
}
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_rtlsdr_MainActivity_nativeRtlSdrFm(JNIEnv *envp, jobject objp)
{
return 1;
}
#ifdef __cplusplus
}
#endif
참고 : gnuradio가 기본으로 설치되어있는 내 rx_filter.cpp 파일에
include $(CLEAR_VARS)
LOCAL_MODULE := rxfilter
LOCAL_SRC_FILES := src/rx_filter.cpp
LOCAL_C_INCLUDES += /usr/local/include/gnuradio \
/usr/local/include \
${ANDROID_NDK_ROOT}/sources/cxx-stl/stlport/stlport
LOCAL_CFLAGS := -DANDROID -DUSE_LIBLOG
LOCAL_SHARED_LIBRARIES += rtlsdr
LOCAL_STATIC_LIBRARIES := /usr/local/lib/libgnuradio #doesn't seem to help
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
위치
안드로이드에서 gnuradio 기능에 액세스하려면 어떻게해야합니까?
또 다른 질문은 Android NDK 환경에서 대역 통과 필터를 만드는 방법입니다.
미리 감사드립니다. 그동안 나는 지난 며칠 동안 내가 직접 문제를 해결할 것입니다. 솔루션을 찾으면 게시 할 것입니다.