【问题标题】:libxml2 with Android NDKlibxml2 与 Android NDK
【发布时间】:2011-03-14 15:11:09
【问题描述】:

我正在尝试从 Android NDK 运行 libxml2(用于从 iPhone 移植各种代码)。 我已经设法获得了编译和识别 libxml 头文件的基本代码,但我无法使用任何方法(我收到 undefined reference 错误)

据我所知,这是因为 NDK 并没有真正链接 libxml 库 - 所以 .h 文件中的所有标头都有效,但方法并不真正存在。

过去有人成功过吗?

这是当前的 Android.mk 文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := xpathParser
LOCAL_SRC_FILES := xpathParser.c

LOCAL_C_INCLUDES += /Developer/SDKs/MacOSX10.6.sdk/usr/include/libxml2

LOCAL_CFLAGS    := -Werror
LOCAL_LDLIBS := -ldl -llog
LOCAL_STATIC_LIBRARIES := -llibxml2

include $(BUILD_SHARED_LIBRARY)

还有C代码:

JNIEXPORT void JNICALL Java_com_mycompany_libxmltest_LibXMLTest_nativeInit(JNIEnv * env, jobject obj)
{   
    xmlDocPtr doc;
    xmlXPathContextPtr xpathCtx; 
    xmlXPathObjectPtr xpathObj; 
    const char* filename;

#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_SAX1_ENABLED)
    LOGD("---- LIBXMLTEST ---- HAS LIBXML!  %d",XML_PARSE_RECOVER);

    /* THESE ARE ALL UNDEFINED REFERENCES WHEN COMPILED */
    xmlInitParser();
    xmlFreeDoc(doc); 
    xmlLineNumbersDefault(1);
#else
        LOGD("---- LIBXMLTEST ---- CAN'T FIND LIBXML!");
#endif

}

【问题讨论】:

  • libxml 在 NDK 中不可用。您需要自己移植/构建它。
  • 我已经回答了类似的问题你可以查看stackoverflow.com/questions/45030097/…>

标签: android android-ndk libxml2


【解决方案1】:

LOCAL_STATIC_LIBRARIES 值不需要“-l”前缀,这可能会导致您的问题。改用这个:

LOCAL_STATIC_LIBRARIES := libxml2
# or /path/to/libxml2/lib/libxml2 for example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2011-06-25
    • 2015-04-11
    • 2016-10-13
    相关资源
    最近更新 更多