Windows環境下libxml2庫的使用小結

來源:互聯網
上載者:User

(1)--環境的搭建,下載與安裝LIBXML2和ICONV

          Libxml2是一個C語言的XML程式庫,可以簡單方便的提供對XML文檔的各種操作,並且支援XPATH查詢,以及部分的支援XSLT轉換等功能。Libxml2的是http://xmlsoft.org/downloads.html,完全版的庫是開源的,並且帶有例子程式和說明文檔。完全版的檔案名稱為:libxml2-2.7.8.tar.gz。

          Libxml2中預設的內碼是UTF-8,所有使用libxml2進行處理的xml檔案,必須首先顯式或者預設的轉換為UTF-8編碼才能被處理。
要在xml中使用中文,就必須能夠在UTF-8和GB2312內碼(較常用的一種簡體中文編碼)之間進行轉換。Libxml2提供了預設的內碼轉換機制,並且在libxml2的Tutorial中有一個例子,事實證明這個例子並不適合用來轉換中文。所以需要我們顯式的使用ICONV來進行內碼轉換,libxml2本身也是ICONV使用進行轉換的。ICONV是一個專門用來進行編碼轉換的庫,基本上支援目前所有常用的編碼。它是glibc庫的一個部分,常常被用於UNIX系統中。當然,在windows下面使用也沒有任何問題。

其是http://gnuwin32.sourceforge.net/packages/libiconv.htm,檔案名稱為libiconv-1.9.2-1-lib.zip。

          將libiconv-1.9.2-1-lib.zip解壓,將其中的iconv.h放入C:\opt\include目錄中,將其中的libiconv.lib放入C:\opt\lib中,並改名為iconv.lib.(沒有opt目錄就建立一個)。

          解壓libxml2-2.7.8.tar.gz檔案到C盤根目錄,在c:\libxml2-2.7.8\libxml2-2.7.8\win32目錄中存放了多個Windows平台編譯器的Makefile檔案,我們使用vs2008,所以待會會用Makefile.msvc檔案。

1.進入Visual Studio 2008 Command Prompt;

2.cd c:\libxml2-2.7.8\libxml2-2.7.8\win32

3.輸入cscript configure.js compiler=msvc prefix=c:\opt  include=c:\opt\include lib=c:\opt\lib debug=yes,斷行符號執行。

4.最後使用nmake命令進行編譯,輸入nmake /f Makefile.msvc並斷行符號。

此時會出現一下錯誤提示,

Makefile.msvc(465) : fatal error U1020: end-of-file found before next directive
Stop.

網上找了下原因,原來是Makefile.msvc中存在錯誤。

+!if "$(WITH_ICU)" == "1"+LIBS = $(LIBS) icu.lib+!endif

將以上三行前面的+號都刪掉,重新執行nmake即可。

在當前win32目錄中產生了一個bin.msvc目錄,其中就有開發需要的libxml2.lib和libxml2.dll檔案。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.