我按照教程在Android studio中构建了一个JNI接口。但我不知道如何通过调用我的C库中的其他函数来添加更多内容。我甚至不确定我是否能看到我的图书馆;我想如果我打电话给我知道的其中一个功能。所以我的问题是我不理解我的JNI文件夹中的文件。我看到它是用C语写的。为什么#include与通常的C包括不同,我看到的是#include,或者我相信你也可以说#include“foo.c”呢?为什么包名中有_?如何在我的一个库中调用JNI文件夹下两层的函数?我阅读了JNI规范,但仍然不了解JNIenv的工作原理。
例如,为了测试这个,我尝试将random.c添加到我的文件中。它位于我的JNI文件夹下面两层; ndk-builder说没有这样的文件。所以我认为我需要处理我的Andorid.mk并确保构建环境可以看到random.c。真的吗?我可以以某种方式指定random.c的完全限定路径吗?
#include "com_example_sansari_ndktest_MainActivity.h"
#include <random.c>
JNIEXPORT jstring JNICALL
Java_com_example_sansari_ndktest_MainActivity_HelloJNI
(JNIEnv *env, jobject obj)
{
(*env)->NewStringUTF(env,"Hi From Sean");
}
@JP;谢谢。所以我应该能够在上面的文件中说出类似的内容:
(* ENV) - &GT;随机();
能否在我的主要活动中收到一个整数? random()声明一个静态整数,修改它并返回它。
@JP。谢谢。所以我可以说 随机();在我的C文件中,该值将显示在我的MainActivity中。那是好消息;谢谢。现在我想弄清楚如何修复我的Andorid.mk。
@JP。谢谢。我把它拿出来了。我非常感谢你的帮助。