gpt4 book ai didi

Android JNI ndk-构建错误 : 'jni' has not been declared

转载 作者:行者123 更新时间:2023-11-28 02:07:09 28 4
gpt4 key购买 nike

我想在native方法中使用动态注册,所以我需要设置JNI_onLoad功能。我只是写了一个函数来获取两个数字的总和。但是,它无法正确构建。我该如何更正错误?

  • 这是我的 *.cpp 文件,我将此文件命名为 jni.cpp

    #include <jni.h>
    extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {

    jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6);
    jni::jclass& nativeClass = jni::FindClass(env, "com/test/NativeClass");

    #define MAKE_NATIVE_METHOD(name, sig) jni::MakeNativeMethod<decltype(name), name>( #name, sig )
    jni::RegisterNatives(env, nativeClass, MAKE_NATIVE_METHOD(nativeAddTest, "(II)I") );

    return JNI_VERSION_1_6;
    }

    jlong nativeAddTest(JNIEnv *env, jni::jobject* obj, jni::jint a, jni::jint b) {
    return a+b;
    }
  • Android.mk

     LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := test
    LOCAL_SRC_FILES := jni.cpp
    LOCAL_LDLIBS := -L/ndk-path/sources/cxx-stl/stlport/libs/armeabi

    include $(BUILD_SHARED_LIBRARY)
  • 当我使用 ndk-build 时命令,错了。但是我真的不知道原因...

    D:\WorkSpaces\Test\app\src\main\jni>ndk-build
    [x86] Compile++ : test <= jni.cpp
    D:/WorkSpaces/Test/app/src/main/jni/jni.cpp: In function 'jint JNI_OnLoad(JavaVM*, void*)':
    D:/WorkSpaces/Test/app/src/main/jni/jni.cpp:9:5: error: 'jni' has not been declared
    jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6);
    ^
    D:/WorkSpaces/Test/app/src/main/jni/jni.cpp:9:18: error: 'env' was not declared in this scope
    jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6);
    ....

好像找不到jni.h,但是我已经有了#include<jni.h>

最佳答案

在 Android NDK 中, 没有定义 jni 命名空间。只需删除所有 jni::

#include <jni.h>
extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {

JNIEnv env;
vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6);
jclass nativeClass = env->FindClass("com/test/NativeClass");

……等等。

关于Android JNI ndk-构建错误 : 'jni' has not been declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043758/

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