2012-01-16 18 views
1

私はlibgdxとbullet物理エンジンを使用するアンドロイドゲームを開発しています。私は何の問題もなくゲームをコンパイルすることができますが、私はゲームに銃弾を追加するとき、それは、このエラーでクラッシュ:android NDKライブラリを読み込む - UnsatisfiedLinkError

.... UnsatisfiedLinkErrorを:弾丸をロードできませんでした:findLibraryはnullを返し...

Iを弾丸ライブラリをうまくコンパイルできますが、私のコードで使用しようとするとクラッシュします。面白いのは、弾丸を使ってlibgdxを使わない別のプロジェクトがあり、問題なく動作するということです。誰が問題になるかも知っていますか?私が知っていることから、ndk-buildは.soファイルとobjフォルダのみを生成します。

bullet .soファイルが.apkに含まれていない、クラッシュしているようです。それがどうか私はどうすれば確認できますか?誰にも同様の問題があったのですか?

ありがとうございました!

+0

.apkを解凍して確認できます – Ludevik

答えて

1

私は私の問題を解決しました。問題は、libgdxにはlibsフォルダにarmeabiとarmeabi-v7aフォルダがあり、bulletにはarmeabiしかないということです。だから私はarmeabi - v7aを削除して、それは魔法のように働いた!

0

System.loadLibraryに渡される名前が.apkファイルの.soの名前と同じであることを確認します。 Apkファイルは実際にはzipファイルなので、拡張子を.zipに変更し、解凍してlibsフォルダ内を調べることができます。

apkファイルのlibsフォルダの下にlibFooBar.soという名前のファイルがある場合は、loadLibaryに "FooBar"、 "libFooBar"または "libFooBar.so"のいずれかの名前を渡す必要があります。

0

.cネイティブファイルの代わりに.cppネイティブファイルを使用したときにこの問題が発生しました。問題は、.cppビルドツールでname-manglingを占めていないことでした。あなたのネイティブメソッドの定義を囲む、以下を追加してみてください:

#ifdef __cplusplus 
extern "C" { 
#endif 
    /* ... */ 
#ifdef __cplusplus 
} 
#endif 
0

イム、上記のポストが参考になっはしかし、私は私のgame.apkをチェックしたので、ライブラリはlibに/ armeabi下にある

同様の問題を有するが、私はlibs/armeabiのEclipseでそれを構築するとき。

私はそれが普通のlibsの下にあるべきだと思っています。誰かが私がlibをlibsに変更するのを助けることができれば、本当に役に立つでしょう。

関連する問題