windows平台cl.exe編譯pcre 8.13

來源:互聯網
上載者:User

最近在windows平台開發的一個project需要使用Regex,當然自己實現一個regexp也是可以的,只是太蛋疼且技術不到家。所以我優先考慮了open source的library,pcre是比較有名的庫,在linux編譯都是普通的套路,不過在win下面就稍微麻煩一點了。

主要參考tombkeeper兄的《VC編譯pcre備忘》一文。具體步驟參考如下:

  1. 下載最新的pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.13.zip (zip/tar.gz/tar.bz2三種格式任選一種,windows的一般用zip),並解壓。
  2. 重新命名config.h.generic為config.h,這是generic設定檔,需要根據具體的環境對先行編譯做相應修改。
    HAVE_BCOPY 1改為0,HAVE_INTTYPES_H 1改為0,HAVE_STDINT_H 1改為0。
    如果不修改,在下面編譯dftables的步驟中會報錯:

     

    pcre_internal.h(198) : fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory

  3. 重新命名pcre.h.generic為pcre.h,重新命名pcre_chartables.c.dist為pcre_chartables.c
  4. cl -MD -DHAVE_CONFIG_H dftables.c產生dftables.exe
  5. dftables.exe pcre_chartables.c (修改了一些注釋,不知道目的何在)
  6. cl -O1 -MD -DHAVE_CONFIG_H -c pcre_chartables.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_compile.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_config.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_dfa_exec.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_exec.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_fullinfo.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_get.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_globals.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_info.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_maketables.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_newline.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_ord2utf8.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_refcount.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_study.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_tables.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_try_flipped.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_ucd.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_valid_utf8.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_version.ccl -O1 -MD -DHAVE_CONFIG_H -c pcre_xclass.clib -out:pcre.lib pcre_chartables.obj pcre_compile.obj pcre_config.obj pcre_dfa_exec.obj pcre_exec.obj pcre_fullinfo.obj pcre_get.obj pcre_globals.obj pcre_info.obj pcre_maketables.obj pcre_newline.obj pcre_ord2utf8.obj
    pcre_refcount.obj pcre_study.obj pcre_tables.obj pcre_try_flipped.obj pcre_ucd.obj pcre_valid_utf8.obj pcre_version.obj pcre_xclass.obj最後產生的pcre.lib就是我們所需要的pcre庫檔案。
    【注意】,如果要編譯debug版本的pcre.lib,請用-MDd替代-MD,否則項目會出現“MSVCRTD.lib(cinitexe.obj) : warning LNK4098: 預設庫“msvcrt.lib”的問題。
  7. 拷貝pcre.h和pcre.lib到我們自己項目的目錄,然後在原始碼頂部加入以下代碼:
    #include "pcre.h"
    #pragma comment(lib,"pcre.lib")
  8. 用一下代碼測試:

     

    version= pcre_version();wchar_t
    *shit = (wchar_t
    *)malloc(strlen(version));MultiByteToWideChar(CP_ACP,0,version,-1,shit,wcslen(shit));MessageBox(hWnd,shit,shit,MB_OK);

     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.