1
私はAndroid NDKからlibxml2を実行しようとしています(iPhoneからさまざまなコードを移植するため)。 libxmlヘッダーファイルをコンパイルして認識するための基本コードを取得できましたが、どの方法も使用できません(undefined reference
エラーが発生します)libxml2 with 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から入手できません。自分でポート/ビルドする必要があります。 –
私は同様の質問に答えました。 –