2011-09-17 4 views
6

私はちょうどここで壁から頭を叩き始める準備ができています。私はこの問題について私が見つけることができるすべてのSOのスレッドを読んで、問題のすべての単一のGoogleの結果を読んで、スクワットを見つけることができません。私はC++で2Dエンジンを書いたアンドロイドアプリを構築しています。そして、NDK r6bでstlportの共有バージョンを使用しています。 libstlport_sharedの.soファイルが生成され、正常に私のlibsフォルダにコピーされます。私は、デバイス上でadbシェルを使ってチェックし、.soファイルが正しくコピーされています。libstlport_sharedが存在していてもリンクできませんでしたか?

私の.mkファイルを変更して、libstlport_shared.soを必須モジュールとして明示的に宣言するなど、さまざまな解決策を試しました。コンパイル時にはすべてがうまくいって、APKに表示され、デバイスに正常にコピーされます。私の今後のゲームの超秘密の素晴らしい名前を離れて与えないよう、私は「mypackagenameの」と私の本当のパッケージ名を置き換え

09-17 17:35:26.450: DEBUG/dalvikvm(19277): Trying to load lib /data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so 0x476c6f30 
09-17 17:35:26.450: INFO/dalvikvm(19277): Unable to dlopen(/data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so): Cannot load library: link_image[1995]: failed to link libstlport_shared.so 
09-17 17:35:26.450: WARN/dalvikvm(19277): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lca/ascensionsystems/mypackagename/Ascengine;.<clinit> 
09-17 17:35:26.450: WARN/dalvikvm(19277): threadid=8: thread exiting with uncaught exception (group=0x40025a70) 
09-17 17:35:26.470: VERBOSE/WindowManager(4837): Remove Window{479ca678 Starting ca.ascensionsystems.mypackagename paused=false}: mSurface=Surface(name=Starting ca.ascensionsystems.mypackagename, identity=90) mExiting=false isAnimating=true [email protected] inPendingTransaction=false mDisplayFrozen=false 
09-17 17:35:26.470: ERROR/WindowManager(4837): return in removeWindowLocked 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): FATAL EXCEPTION: GLThread 9 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): java.lang.ExceptionInInitializerError 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at ca.ascensionsystems.mypackagename.GL2JNIView$Renderer.onSurfaceChanged(GL2JNIView.java:336) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1327) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): Caused by: java.lang.UnsatisfiedLinkError: Library stlport_shared not found 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at java.lang.Runtime.loadLibrary(Runtime.java:461) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at java.lang.System.loadLibrary(System.java:557) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  at ca.ascensionsystems.mypackagename.Ascengine.<clinit>(Ascengine.java:26) 
09-17 17:35:26.490: ERROR/AndroidRuntime(19277):  ... 3 more 
09-17 17:35:26.500: WARN/ActivityManager(4837): Force finishing activity ca.ascensionsystems.mypackagename/.mypackagenameActivity 

注:しかし、私はこのエラーを取得します。 :)また、Ascengineは私の2DエンジンであるSOという別の.SOです。

誰もがこのような問題を経験しましたか?何か案は?また、libstlport_sharedのobjdumpを実行してdepsを確認しました。私はそれらがDDMSで私のデバイス上に存在し、libstlport_sharedをロードしようとする前に私のJavaコードに明示的にロードしていることを確認しました。違いはありません。前もって感謝します!

これは、質問への第2の、任意成分の一種です。私が思ったがまだ試していない1つの解決策は、System.load(absolutePathToLibrary)を使用することですが、java内でこのパスを生成する方法を見つけることができません。明らかな理由から、私はそれをハードコードしたくありません。再度、感謝します!

+0

私にも同様の問題がありますか? http://stackoverflow.com/questions/11483078/library-stlport-shared-not-found-in-titanium-application – Mari

答えて

2

さて、私は解決策を見つけたようです。私は基本的にstlポートの共有バージョンを使用して放棄し、静的に切り替えました。私はその後、Application.mkフラグを使用して静的バージョンを再構築しました:STLPORT_FORCE_REBUILD := true

しかし、私はまだ奇妙な問題を抱えていました。それは一度コンパイルされ、うまくインストールされます。その後、私は清潔でrecomplied /展開し、それは正常にビルドを終了し、私のアプリケーションにダイアログボックスでエラーがあったが実際には食べていないことを教えてください。私は日食を終了し、それを再始動し、きれいにし、再建し、それはすべて今働く。最新のNDKにいくつかのバグや問題があるようですね...例外的に完全なSTLポートを実行するとうまくいけば、NDK r7で修正されます。

関連する問題