2012-04-10 19 views
3

/system/libs/my_lib.soディレクトリからライブラリを正常にロードしました。このライブラリで定義されているC/C++関数を使用するにはどうすればよいですか?ライブラリを読み込むためのSystem.load

public class MainFrom extends Activity { 

    private static final String LOG_TAG = "MainFrom"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // How to use the functions of test_lib.so? 

     /* 
      java.lang.UnsatisfiedLinkError: stringFromC 


     String s1 = stringFromC(), s2 = stringFromCpp(); 

     Log.w(LOG_TAG, stringFromC()); 
     Log.w(LOG_TAG, stringFromCpp()); */ 
    } 

    public native String stringFromC(); 
    public native String stringFromCpp(); 

    static { 
     try { 
      System.load("/system/lib/test_lib.so"); 
      Log.i(LOG_TAG, "MainFrom. Success!"); 
     } catch (UnsatisfiedLinkError e) { 
      Log.e(LOG_TAG, "MainFrom. UnsatisfiedLinkError"); 
     } 
    } 

} 

stringFromCstringFromCpptest_lib.soあなたがアンドロイドNDKで.cppファイルをコンパイルするためにあなたのAndroid.mkファイルにLOCAL_CPPFLAGS := $(YOURMODULE_CPPFLAGS)とでLOCAL_SRC_FILES := yourfile.cppを配置する必要があり

+0

あなたのAndroid.mkファイルとも.Cと.CPPを共有することができますか? –

+0

@NISHAnT共有するには?私はCyanogenを構築しています。私のテストライブラリは "外部"フォルダにあり、cとcppの使用法は "framesworks"フォルダにあります。可能であれば –

+0

コードを共有してください。 –

答えて

3

私は私の問題を解決しました。

System.load("/system/lib/libtest_lib.so"); 

代わりの

System.load("/system/lib/test_lib.so"); 

とても奇妙を書く必要がありました。実行した場合

adb shell 
ls /system/lib 

test_lib.soファイルが表示されます。 libという接頭辞を使用してライブラリをロードするのが正しい理由は何ですか?

+0

いいえ、lib接頭辞を使用する必要はありません。もしあなたがANDROID_SOURCES/external/your_lib /のJNI関数を使いたいのであれば、それらを 'Java_com_your_pack_name_YourClass_yourJniMethod'と呼び、' System.load( "/ system/lib/test.so")を含む静的初期化ブロックを作るべきです。 –

+0

私はこれを知っていますあなたはあなたが上で言ったことを説明することができますか?私は/ storage(内部ストレージ)からライブラリをインクルードしようとしています。 –

0

にコンパイルされた.c.cppファイルに存在します。

ご希望の場合はお手数ですが、

0

Android 7.0からは、アプリがNDK以外のライブラリと動的にリンクすることがなくなり、アプリがクラッシュする可能性があります。この動作の変更は、プラットフォームのアップデートやさまざまなデバイス間で一貫したアプリエクスペリエンスを作成することを目的としています。

android 7.0 changes description

関連する問題