12

私は Android プロジェクトに取り組んでおり、NDK を使用してネイティブ メソッドを呼び出しています。2 つのライブラリ (.so ファイル) があり、1 つはlibs/armeabiフォルダーにあり、もう 1 つはlibs/armeabi-v7alib フォルダーにあります。

アプリケーションを実行しようとすると、/libs/armeabiフォルダーにライブラリが読み込まれません。ライブラリ ファイルをlibs/armeabi-v7aフォルダに移動すると、ライブラリが読み込まれますが、5 ~ 10 分後にクラッシュし、セグメンテーション違反エラーが発生します。

ライブラリの場所 (別のフォルダー) がこの問題を引き起こすのではないかと思っていました。

4

3 に答える 3

5

ライブラリローダーは、実行しているアーキテクチャに最も近いライブラリを検索しようとします。一般に、コンパイラーが正しく最適化できるように、サポートする予定のabis(armeabi、armeabi-v7a、x86、mips)ごとに1つのバージョンのライブラリーをコンパイルする必要があります。

ディレクトリ構造は、Androidがロードするライブラリを決定する方法であるため、変更しないことが重要です。

于 2012-07-27T22:37:40.210 に答える
-6

私はこれに慣れていませんが、同じ道を進んでいます...私の知る限り、共有ライブラリは1つしかない場合があります。複数のライブラリを使用するには、それらを静的にして、それらを単一の共有ライブラリにリンクします。もちろん、これはライブラリを自分で構築していることを前提としています;-)

于 2011-09-22T17:07:55.373 に答える