2011-03-14 19 views
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 

} 
+0

libxmlはNDKから入手できません。自分でポート/ビルドする必要があります。 –

+0

私は同様の質問に答えました。

答えて

0

LOCAL_STATIC_LIBRARIES値は、これはあなたの問題を引き起こしている可能性 '-l' プレフィックスを必要としません。これを代わりに使用してください:

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