我正在研究JNi的例子。我有一个C档:
#include "test_lib.h"
#include <mobile_crypto.h>
#include <stdio.h>
int mainCrypto(void){
.
.
.
.
return 1 ;
}
现在我想从另一个编写JNI方法的C文件中访问mainCrypto()方法:
#include "com_My_NativeLib.h"
#include "test_lib.h"
#include <stdio.h>
#include <jni.h>
JNIEXPORT jint JNICALL Java_com_My_NativeLib_crypt(JNIEnv * env, jobject obj){
int status = 0;
status = mainCrypto();
return status;
}
我想知道我是否可以按照我在这个例子中的方式从另一个C文件中调用纯C函数mainCrypto()。我没有得到任何返回值,因此状态变量值没有得到更新。
提前致谢。
我得到的一些错误: DEBUG / NDK_NativeLib(3640):[09-12 15:58:40.766 3640:0xe38 F // system / bin / app_process] DEBUG / NDK_NativeLib(3640):检测到堆栈损坏:已中止 DEBUG / Zygote(33):过程3640由信号(6)终止 INFO / ActivityManager(41):进程com.crypto(pid 3640)已经死亡。
答案 0 :(得分:1)
为什么你认为你可能无法从其他C函数调用mainCrypto()
?似乎很明显,没有理由你不能,但我不认为你会问这个问题,除非你有理由认为你做不到。除非你遗漏了一些奇怪的细节,是的,你也可以从其他地方打电话。
答案 1 :(得分:1)
创建h文件,例如maincrypto.h,后跟文本
int mainCrypto(void);
使用Java_com_My_NativeLib_crypt在你的cpp文件中添加#include“maincrypto.h”,那就是