[英]Fail when I use a function of a c++ library
我正在做一个原生的 Android 应用程序,我有这个问题:
在我的本机代码中,我想使用 Siglib(一个 DSP 库),但是当我使用该库的一个函数并尝试运行该应用程序时,出现此错误:
undefined reference to 'SDA_CorrelateLinear'
这是我的简单代码:
本地文件
#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);
}
安卓.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)
和应用程序.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi
APP_PLATFORM := android-8
我该怎么做才能解决这个问题? 例如,如果这个库没有像 OpenCV 这样的 Android 版本,那么可能吗?
谢谢
首先,我很抱歉之前没有回复,但我没有意识到这里有任何 SigLib 问题。 我知道这已经很长时间了,但我不喜欢我应该回应却无人回答的话题。 我相信你现在已经继续前进了,但我认为回答你的问题没有坏处。
SigLib 已在许多重要的 Android 应用程序中使用,所以我知道它在这种情况下是健壮的。 SigLib 的免费版本包括一个 Android 版本。 正如 PaF 所提到的,除了包含标题之外,您还需要链接库文件。 提供了一个简单的示例,说明如何执行此操作。
如果您需要任何进一步的帮助,请随时通过 Numerix-DSP 网站与我联系。 最好的问候,约翰
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.