0

我通过使用 android ndk 更改 CC、CFALGS LDFLAGS 为 android 交叉编译了 libxml2-2.90。运行config和make,编译成功。

然后我用原生 c 编写了简单的基于 libxml2 的示例,并编写了包含上述库和包含编译共享库的 Android.mk 文件。

1.我使用ndk-build脚本,成功编译原生libxml应用

  1. 我将这两个库放在 android 项目 /libs/armeabi
  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” ' 未找到)

请帮助如何正确链接 xml2 lib ..

4

1 回答 1

0

为 android 交叉编译时,您必须禁用为库设置 soname。如果您使用 automake,请将 -version-info SOME:VERSION:NUMBER 替换为 -avoid-version,然后重新配置并重新编译您的库 (libxml) 和所有依赖项 (libsamplexml)。

于 2013-04-10T17:40:35.190 回答