【问题标题】:What is the correct way to write native method signatures in Android NDK using Android Studio?使用 Android Studio 在 Android NDK 中编写本机方法签名的正确方法是什么?
【发布时间】:2016-08-28 03:29:53
【问题描述】:

我有一个 NDK 库和相应的 Java 类的工作实现。但是我得到了 ndk 方法的错误...... 我用的是安卓工作室 1.5 gradle 2.8 实验:0.4.0

我的代码是...

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

jstring Java_com_example_shivlabs_ndktest_MainActivity_HelloWorld(JNIEnv* env,jobject obj)
{
    return (*env)->NewStringUTF(env,"HelloWorld");
}

以上是我的 ndktest.c 文件。

当我声明本机方法时出现错误。错误是报告 Java 中的本机方法声明,但在项目中没有找到对应的 JNI 函数。

public class MainActivity extends AppCompatActivity
{
    public native String HelloWorld();

    static
    {
        System.loadLibrary("ndktest");
    }
}

怎么解决????

【问题讨论】:

  • 所有情况下正确的方法是使用javah.的输出,这就是它的用途。不要手动做计算机可以为您做的事情。

标签: android-ndk java-native-interface


【解决方案1】:

不确定您的目录结构是什么样的,但您的方法签名看起来是正确的。

但我认为您忘记了方法上方的以下声明。

JNIEXPORT jstring JNICALL

所以你的方法应该是这样的:

JNIEXPORT jstring JNICALL
jstring Java_com_example_shivlabs_ndktest_MainActivity_HelloWorld(JNIEnv* env,jobject obj)
{
    return (*env)->NewStringUTF(env,"HelloWorld");
}

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2020-05-25
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多