私はJNiの例で作業しています。JNIメソッドから純粋なC関数を呼び出す
#include "test_lib.h"
#include <mobile_crypto.h>
#include <stdio.h>
int mainCrypto(void){
.
.
.
.
return 1 ;
}
は、今私は私のJNIメソッドが書かれている別のCファイルからmainCrypto()メソッドにアクセスしたい:私は、Cのファイルを持っている
#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関数mainCrypto()は、この例でやっている方法で別のCファイルから取得します。戻り値が得られないため、ステータス変数の値が更新されません。
ありがとうございます。私は取得しています
一部のエラー: DEBUG/NDK_NativeLib(3640):[9月12日15:58:40.766 3640:0xe38 F //システム/ binに/ app_process] DEBUG/NDK_NativeLib(3640):スタック腐敗が検出されました:aborted DEBUG/Zygote(33):プロセスによって終了されたプロセス3640(6) INFO/ActivityManager(41):プロセスcom.crypto(pid 3640)が終了しました。
のthats:ご回答いただきありがとうございます。私が提案したようにヘッダファイルを作成しました。 mainCrypto()からのreturn文は実行されません。私のエラーログはDEBUG/NDK_NativeLib(3640)です:[09-12 15:58:40.766 3640:0xe38 F //システム/ bin/app_process] DEBUG/NDK_NativeLib(3640):スタックの破損が検出されました:中止されました DEBUG/Zygoteプロセス(3640)はシグナル(6)で終了しました。 INFO/ActivityManager(41):プロセスcom.crypto(pid 3640)が終了しました。 –
あなたのコードではエラーのようです。 Hファイルを使用して関数を定義することは、このエラーの原因にはなりません。 mainCrypto内のすべてのコードにコメントを投稿しよう –