libxml2 с Android NDK - PullRequest
       11

libxml2 с Android NDK

1 голос
/ 14 марта 2011

Я пытаюсь запустить libxml2 из Android NDK (для портирования различного кода с 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

}

1 Ответ

0 голосов
/ 22 марта 2011

Значения LOCAL_STATIC_LIBRARIES не нуждаются в префиксе '-l', это может быть причиной вашей проблемы. Используйте это вместо:

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