1
我想從Android NDK運行libxml2(用於從iPhone移植各種代碼)。 我已經設法得到編譯和識別libxml頭文件的基本代碼,但我不能使用任何方法(我得到undefined reference
錯誤)libxml2與Android NDK
從我已經發現它是因爲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獲得。你需要自己移植/構建它。 –
我已經回答了類似的問題您可以檢查 –