2011-09-12 22 views
0

私は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)が終了しました。

答えて

1

フォローテキスト

INT mainCrypto(ボイド)を有する例えばmaincrypto.hため、Hファイルを作成します。 Java_com_My_NativeLib_cryptであなたのcppファイル内

は、#include "maincrypto.h" を追加し、ヘンリーPushel @すべて

+0

の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)が終了しました。 –

+1

あなたのコードではエラーのようです。 Hファイルを使用して関数を定義することは、このエラーの原因にはなりません。 mainCrypto内のすべてのコードにコメントを投稿しよう –

1

他のC関数からmainCrypto()を呼び出すことができないと思われるのはなぜですか?あなたができなかった理由はないが、私はあなたがあなたができないと思う理由がなければ、あなたが質問するとは思わないと思う。あなたが残しているいくつかの奇妙な細部を除いて、はい、あなたは他の場所からもそれを呼び出すことができます。

関連する問題