J'essaie d'exécuter libxml2 à partir de l'Android NDK (pour le portage de divers codes de l'iPhone). J'ai réussi à obtenir le code de base pour compiler et reconnaître les fichiers d'en-tête de libxml mais je ne peux pas utiliser une méthode (je reçois undefined reference
erreurs)libxml2 avec Android NDK
D'après ce que j'ai compris c'est parce que le NDK n'est pas liant vraiment la bibliothèque libxml - ainsi tous les en-têtes des fichiers .h fonctionnent mais les méthodes ne sont pas vraiment là.
Quelqu'un a déjà réussi cela?
C'est le Android.mk actuel fichier
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)
Et le code 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 n'est pas disponible à partir du NDK. Vous aurez besoin de le porter/de le construire vous-même. –
J'ai répondu à la question similaire Vous pouvez consulter –