-1
JNIでプレビルド共有ライブラリを使用しようとしました。 しかし、私はJNIライブラリをビルドすると、関数の定義されていない参照に常に不平を言っています。Android NDK/JNI - プレビルドライブラリを使用して定義された関数への未定義参照
ここは私のAndroid.mkファイルです。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mtestlib
LOCAL_SRC_FILES := mtest/arm64-v8a/lib/libtest.so
LOCAL_EXPORT_C_INCLUDES := mtest/arm64-v8a/include
LOCAL_EXPORT_LDLIBS := mtest/arm64-v8a/lib/libtest.so
LOCAL_PRELINK_MODULE := true
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := myJNI
LOCAL_SRC_FILES := myJNI.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/mtest/arm64-v8a/include
LOCAL_SHARED_LIBRARY := mtestlib
include $(BUILD_SHARED_LIBRARY)
これは私のJNIファイルです。
#include "lucien_example_com_jtest_myNDK.h"
#include <android/log.h>
#include <iostream>
#include <iostream>
#include "Mtest.h"
JNIEXPORT jint JNICALL Java_lucien_example_com_jtest_myNDK_test
(JNIEnv *env, jobject, jstring tmp){
const char* str;
str = env->GetStringUTFChars(tmp,false);
std::cout<< str << std::endl;
env->ReleaseStringUTFChars(tmp,str);
mtest(str);
}
Mtest.hヘッダー:
#include <stdio.h>
#include <stdlib.h>
#include <cutils/properties.h>
#include <utils/Log.h>
int mtest(const char *str);
MTESTソースファイル:私は未定義の参照JNI負荷MTEST()関数を文句だ、なぜ私にはわからない
#include "Mtest.h"
#define LOG_TAG "Test"
int mtest(const char *str){
ALOGE("[Lucien] test(%s)", str);
return 0;
}
。 ヘッダーと事前ビルドlibは既に含まれています。 このエラーの原因となる間違ったステップはどれですか? 助けてください、ありがとう。
申し訳ありませんが、間違ったソースファイルを貼り付けます。 私のソースファイルでは、header、source、およびJNI呼び出しの機能が一致しています。 – Ting