안드로이드 ndk 빌드 중 정의해 놓은 함수가 정의되어있지 않다고 에러가 발생합니다.

조회수 995회

ndk-build 동작시 아래 코드의 "process(input, output)" 에서 에러가 발생하는데 도움 부탁드립니다.

[audacity_process.cpp]

#include <jni.h>
#include <string.h>
#include "noisereduction/Audacity.h"
#include <stdio.h>

#include <android/log.h>

JNIEXPORT void JNICALL Java_com_example_gonghoonnt_audacity_Audacity_preprocess(JNIEnv* env, jobject, jstring inputPath, jstring outputPath)
{
    const char * input = (env)->GetStringUTFChars(inputPath, 0);
    const char * output = (env)->GetStringUTFChars(outputPath, 0);

    process(input, output); // 에러발생

    return;
}

[ERROR]

jni/audacity_process.cpp:13: error: undefined reference to 'process(char const*, char const*)'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi-v7a/libnoisereduction.so] Error 1

[Audacity.h]

void process(const char* inputPath, const char* outputPath);

[Audacity.cpp]

#include <iostream>
#include "NoiseReduction.h"
#include <sndfile.h>
#include "loguru.hpp"
#include "Utils.h"
#include "cxxopts.hpp"
#include "Audacity.h"

void process(const char* inputPath, const char* outputPath) {
    auto ctx = openAudioFile(inputPath);

    NoiseReduction::Settings settings;
    NoiseReduction reduction(settings, ctx);
    auto t0 = 0;
    auto t1 = ctx.info.frames;

    reduction.ProfileNoise(t0, t1);
    reduction.ReduceNoise(outputPath);

    return 0;
}

위와 같이 만들어 놨는데 정의되지 않았다고 에러가 발생하니까 어떻게 할지 모르겠습니다.

추가로 android.mk와 application.mk는 다음과 같이 구성되어있습니다.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := noisereduction

LOCAL_CFLAGS = -DFIXED_POINT -DUSE_KISS_FFT -DEXPORT="" -UHAVE_CONFIG_H

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

FILES := audacity_process.cpp

LOCAL_SRC_FILES := $(FILES)

LOCAL_LDLIBS :=  -llog

include $(BUILD_SHARED_LIBRARY)
APP_ABI := armeabi-v7a arm64-v8a x86

어떤 부분을 수정하거나 추가해야하 할지 의견 부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 자답입니다.

    Android.mk 파일에 Audacity 파일을 추가하지 않아 발생한 에러입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)