我正在使用原生Android应用程序,我遇到了这个问题:
在我的原生代码中,我想使用Siglib(一个DSP库),但是当我使用这个库的一个函数并尝试运行该应用程序时,出现此错误:
undefined reference to 'SDA_CorrelateLinear'
这是我的简单代码:
nativo.cpp
#include "nativo.h"
#include "Parameters.h"
#include <siglib.h>
#include <android/log.h>
using namespace std;
#define LOG_TAG "NATIVO"
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
JNIEXPORT jlong JNICALL Java_com_sistoleaudiocapture_Processing_init_1variables(
JNIEnv *, jclass) {
long dir = (long) new Parameters();
return (dir);
}
JNIEXPORT jdouble JNICALL Java_com_sistoleaudiocapture_Processing_prueba_1nativa(
JNIEnv *, jclass, jlong retorno) {
#define INPUT_1_LENGTH 5L
#define INPUT_2_LENGTH 5L
SLData_t pSrc1[] = { 0.05, 0.1, 0.15, 0.2, 0.25 };
SLData_t pSrc2[] = { 1.0, 1.0, 1.0, 1.0, 1.0 };
#define RESULT_LENGTH ((SLArrayIndex_t)(INPUT_1_LENGTH + INPUT_2_LENGTH - 1))
SLData_t dest[RESULT_LENGTH ];
SDA_CorrelateLinear(pSrc1,pSrc2,dest,5,5,9);
//SDA_CorrelateLinear(pSrc1, pSrc2, dest, INPUT_1_LENGTH, INPUT_2_LENGTH,
// RESULT_LENGTH );
double m1;
int pos_m = 0;
double aux = 0, mayor = 0;
for (int i = 0; i < 9; i++) {
aux = dest[i];
if (aux > mayor) {
mayor = aux;
pos_m = i;
}
}
return (mayor);
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := nativo.cpp Parameters.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH) C:\Users\telo\Downloads\SigLibFree\siglib\include
LOCAL_LDLIBS += -llog -ldl
LOCAL_MODULE := native_code
include $(BUILD_SHARED_LIBRARY)
和Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi
APP_PLATFORM := android-8
我该怎样做才能解决这个问题?如果这个库没有像OpenCV这样的Android版本,可能吗?
由于
答案 0 :(得分:0)
显然,您要包含SigLib的头文件,但您没有链接它。
所以回答你的上一个问题,不,你需要Android版SigLib的库才能在Android中使用它。显然,他们没有一个开箱即用,但它可能是自己编译的(它可能不是一个微不足道的任务,但they do claim他们有&#34;高度便携ANSI C Source&#34;)。
如果您设法获取或创建适用于Android的SigLib库,您可能需要咨询this question以了解如何将其包含在项目中。
答案 1 :(得分:0)
首先,我很抱歉在此之前没有回复,但是我没有意识到这里有任何SigLib问题。 我知道已经有很长时间了,但是我不喜欢那些我应该回应的线程,如果没有得到答复。 我敢肯定您现在已经前进了,但是我认为回答您的问题没有害处。
SigLib已在许多重要的Android应用程序中使用,因此我知道在这种情况下它很健壮。 SigLib的免费版本包括一个Android版。 如PaF所述,除了包括头文件之外,您还需要链接库文件。 提供了一个简单的示例,说明了如何执行此操作。
如果您需要进一步的帮助,请随时通过Numerix-DSP网站与我联系。 最好的祝福, 约翰