我正在尝试将libxml2与android ndk一起使用。当我运行make文件时,我收到错误,说文件'unicode / ucnv.h'不存在。我已经看到'unicode / ucnv.h'包含在其中一个文件中,并且没有这样的头文件。所以我从http://site.icu-project.org/下载了unicode头文件并将它们放在include文件夹中。
现在上一个错误已经消失,但我遇到了这些错误。
SharedLibrary:libxml2.so
./obj/local/armeabi/objs-debug/xml2/encoding.o: In function `openIcuConverter':
C:\test\hello-jni/jni/encoding.c:109: undefined reference to `ucnv_open_49'
C:\test\hello-jni/jni/encoding.c:115: undefined reference to `ucnv_setToUCallBack_49'
C:\test\hello-jni/jni/encoding.c:119: undefined reference to `ucnv_setFromUCallBack_49'
C:\test\hello-jni/jni/encoding.c:126: undefined reference to `ucnv_open_49'
C:\test\hello-jni/jni/encoding.c:132: undefined reference to `ucnv_close_49'
C:\test\hello-jni/jni/encoding.c:135: undefined reference to `UCNV_TO_U_CALLBACK_STOP_49'
C:\test\hello-jni/jni/encoding.c:135: undefined reference to `UCNV_FROM_U_CALLBACK_STOP_49'
./obj/local/armeabi/objs-debug/xml2/encoding.o: In function `closeIcuConverter':
C:\test\hello-jni/jni/encoding.c:141: undefined reference to `ucnv_close_49'
C:\test\hello-jni/jni/encoding.c:142: undefined reference to `ucnv_close_49'
./obj/local/armeabi/objs-debug/xml2/encoding.o: In function `xmlUconvWrapper':
C:\test\hello-jni/jni/encoding.c:1865: undefined reference to `ucnv_convertEx_49'
C:\test\hello-jni/jni/encoding.c:1870: undefined reference to `ucnv_convertEx_49'
collect2:ld返回1退出状态 make: * [obj / local / armeabi / libxml2.so]错误1
我没有在任何文件中找到函数ucnv_open_49。 我是唯一一个面临这个问题的人吗?
答案 0 :(得分:1)
使用libxml2构建unicode库(icu)并在LOCAL_SHARED_LIBRARIES中提及。 就是这样!
答案 1 :(得分:1)
您打算将libxml2与ICU链接(例如将其用于转换)吗?它是可选的,但目前你已启用它。有了这样你就需要ICU链接,而不是静态或动态。有关选项,请参阅libxml2的configure脚本。如果您打算仅使用UTF-8,其中一些是iconv甚至没有转换器。