0

CC、CFALGS LDFLAGS を Android ndk に変更して、Android 用の libxml2-2.90 をクロスコンパイルしました。config と make を実行すると、正常にコンパイルされました。

次に、単純な libxml2 ベースの例をネイティブ c で作成し、上記のライブラリと共有ライブラリをコンパイルするためのインクルードを含む Android.mk ファイルを作成しました。

1.ndk-build スクリプトを使用して、ネイティブ libxml アプリケーションを正常にコンパイルしました

  1. これら 2 つのライブラリを Android プロジェクト /libs/armeabi に配置しました
  2. 次に、これら2つのライブラリをAndroid Javaアプリケーションコードにロードしました

    System.loadLibrary("xml2"); //libxml2.so.2.9.0

    System.loadLibrary("samplexml2"); //libsamplexml2.so

しかし、アプリケーションを実行すると、Android app に対して以下の実行時エラーが発生しました。

例外 Ljava/lang/UnsatisfiedLinkError; Lcom/example/xmlsample/XmlParse の初期化中にスローされます。

原因: java.lang.UnsatisfiedLinkError: ライブラリをロードできません: link_image[1891]: 37 は、'libsamplexml2.so' に必要なライブラリ'libxml2.so.2'をロードできませんでした (load_library[1093]: ライブラリ 'libxml2.so.2 ' 見つかりません)

Plsはxml2 libを適切にリンクする方法を助けます..

4

1 に答える 1

0

Android 用にクロスコンパイルする場合は、ライブラリの soname の設定を無効にする必要があります。automake を使用する場合は、-version-info SOME:VERSION:NUMBER を -avoid-version に置き換えてから、ライブラリ (libxml) とすべての依存関係 (libsamplexml) を再構成して再コンパイルします。

于 2013-04-10T17:40:35.190 に答える