gpt4 book ai didi

android - "Cannot Resolve Corresponding JNI Function"安卓工作室

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:46 25 4
gpt4 key购买 nike

本地代码 native .c

#include <string.h>
#include <stdio.h>
#include <jni.h>

jstring Java_com_lab5_oli_myapplication_MainActivity_helloWorld(JNIEnv* env,jobject obj)
{
return (*env)->NewStringUTF(env,"Hello world");
}

Android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=ocrex
LOCAL_SRC_FILES:=ndkTest.c

include $(BUILD_SHARED_LIBRARY)

应用.mk文件

APP_ABI := all

MainActivity 中的代码

public native String helloWorld();
static{
System.loadLibrary("ocrex");
}

该方法被识别为在 native 代码中声明(注意边栏)

最佳答案

首先,如果您使用的是 android studio 2.2 及更高版本,请使用 Cmake,因为 Android Studio 的默认原生库构建工具是 CMake。但是如果你需要 ndk-build,android studio 仍然支持 ndk-build。

1)在native方法中添加JNIEXPOT和JNICALL,com_lab5_oli_myapplication是MainActivity类的包名。

#include <string.h>
#include <stdio.h>
#include <jni.h>

JNIEXPORT jstring JNICALL Java_com_lab5_oli_myapplication_MainActivity_helloWorld(JNIEnv* env,jobject obj)
{
return (*env)->NewStringUTF(env,"Hello world");
}

LOCAL_SRC_FILES:=ndkTest.c
//change it to
LOCAL_SRC_FILES:=native.c

最后,您必须将 gradle 链接到 native 库。1)如果你有android studio 2.2及以上版本,右键点击应用程序,有Link c++ project with gradle。如果您使用的是 ndk-build,则选择 Android.mk 文件;如果您使用的是 Cmake 构建,则选择插入 CmakeLists 的地址。2) 您还可以手动配置 gradle 以包含 native 库。您需要将 externalNativeBuild block 添加到模块级 build.gradle 文件中,并使用 cmake 或 ndkBuild block 对其进行配置: 如果你正在使用 cmake

 externalNativeBuild {

// Encapsulates your CMake build configurations.
cmake {

// Provides a relative path to your CMake build script.
path "CMakeLists.txt"
}
}

如果你正在使用 ndk-build

externalNativeBuild {

// Encapsulates your CMake build configurations.
ndkBuild {

// Provides a relative path to your to the Android.mk build script.
path "Android.mk"
}
}

有关 android 中 cmake 和 ndk 的详细信息,请使用 thisthis .

关于android - "Cannot Resolve Corresponding JNI Function"安卓工作室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com