2016-05-03 6 views
0

私はNDKライブラリと対応するJavaクラスの実装を行っています。 Androidスタジオを使用してAndroid NDKでネイティブメソッドシグネチャを書き込む正しい方法は何ですか?

#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ファイルです... 0.4.0

マイコードは次のとおりです。しかし、私はAndroidのスタジオ1.5実験 のGradle 2.8を使用 ... NDKメソッドでエラーが発生します。

ネイティブメソッドを宣言するとエラーが発生します。エラーは、プロジェクトで対応するJNI関数が見つからないJavaのReportsネイティブメソッド宣言です。

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

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

どのように解決できますか?

+0

すべてのケースで正しい方法は、それがために何だjavah.' 'の出力を使用することです。コンピュータがあなたのためにできることを手作業で行わないでください。 – EJP

答えて

0

ディレクトリ構造はどのようなものかわかりませんが、メソッドのシグネチャが正しいかどうかはわかりません。

あなたのメソッドの上に次の宣言を忘れてしまったと思います。

JNIEXPORT jstring JNICALL

だからあなたの方法は次のようになります。

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