1

Android NDK と STLport に関する多くの資料を調べました。STLport(C++標準ライブラリポート)をロードする複雑なアプリ、Java +ネイティブコードがあります。元のコードベースには、プロジェクトの「jni」サブディレクトリの Application.mk に「APP_STL := stlport_static」がありました。ld に lib static をロードさせます。これにより、現在の SDK/NDK で多くのコンパイル エラーが発生しました。

提案に従って、動的ライブラリとしてロードしようとしました。(「../jni/Application.mk」で、「APP_STL := stlport_shared」を設定します)これにより、クリーンなコンパイルとロードが行われ、checkJNI を無効にすると、Android armeabi-v7a エミュレーターでアプリが問題なく実行されます「dalvik」仮想マシン上。

しかし、checkJNI を有効にすると、libapplication.so で「unsatisfiedLinkError」が発生します。これは、STLport が動的にロードされたことが原因のようです。そのため、STLport を静的モードでロードしたいと考えています (logcat は、他のいくつかのライブラリが正常にロードされた後にこれを報告します)。ビルド中、コンパイルは問題ありませんが、2 つの複数定義エラーが発生します。具体的には、「「vtable for std::bad_exception」と「std::exception::~exception()」の複数定義」です。(「gnustl_static」も使用してみました)。

私はgccバージョン4.3.0を使用しており、バージョン3.81、コマンドラインモード、およびAndroid ndk-r9c用のbuild-ndkの小さなラッパーを作成し、ビルドターゲットバージョンはandroid-8、「ant」で.apkファイルをビルドしています、 等々。

私よりも Android に詳しい人 (私は完全な初心者です) は、これを以前に見たことがあるかもしれません。もしそうなら、アドバイスしてください。ありがとう。- ラス

4

1 に答える 1