我正在尝试访问 Android 中的 gnuradio 功能,特别是带通滤波器功能。ndk-build 在不调用任何函数的情况下编译代码。当我调用 complex_band_pass(...) 函数时,它给了我一个未定义引用的错误:
来自 ndk-build 的错误:
错误:未定义对 'gr_firdes::complex_band_pass(double, double, double, double, double, gr_firdes::win_type, double)' 的引用 collect2: ld 返回 1 个退出状态
在这个特定文件的我的 Android.mk 文件中:
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)
在我的 rx_filter.cpp 文件中:
#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 已经安装在默认位置
我该怎么做才能访问 android 中的 gnuradio 功能?
另一个问题是如何在 Android NDK 环境中创建带通滤波器?
在此先感谢您,与此同时,我将像过去几天一样自己进行故障排除。如果我找到解决方案,我会发布它。