compile vmime on windows with msvc9

來源:互聯網
上載者:User

VMIME是一個GNU下開源的第三方類庫,主要是支援各種郵件協議的。
 

已經無力吐槽windows下C++的各種第三方庫編譯帶給我的憂傷了,先上需要的類庫

  libvmime-0.9.1.tar.bz
  http://www.vmime.org/downloads.html

  libiconv-1.9.1
 

http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz

  gettext-0.13.1.tar.gz
 

http://ftp.gnu.org/pub/gnu/gettext/gettext-0.13.1.tar.gz

  libgsasl-1.4.4.tar.gz
  ftp://ftp.gnu.org/gnu/gsasl/

  gnutls-2.10.1-x86.exe(這個有點奇葩,稍候再表)
  ftp://ftp.gnu.org/gnu/gnutls/

  (一).libiconv gettext 依賴編譯
 
VMIME要用到iconv()這個函數,而libiconv與gettext庫是又是相互依賴編譯的,有點麻煩
  
1.在c盤根目錄下建立usr檔案夾,並將libvmime-0.9.1.tar.bz和gettext-0.13.1.tar.gz都解壓到這個檔案夾中

   2.編譯並安裝不支援國際化的iconv
   開啟VC9的Visual Studio 2008
Command Prompt,先在libvime目錄下,輸入如下命令
   nmake -f Makefile.msvc
NO_NLS=1 DLL=1 MFLAGS=-MD(注意,MFLAGS這個參數要與你項目的Runtime
library相符);
   等ok後,再輸入如下命令
   nmake -f Makefile.msvc
NO_NLS=1 DLL=1 MFLAGS=-MD install
   等ok後,再輸入如下命令
    nmake -f
Makefile.msvc NO_NLS=1 DLL=1 MFLAGS=-MD distclean
   3.編譯並安裝gettext
   開啟VC9的Visual Studio 2008
Command Prompt,轉到gettext目錄下,輸入如下命令
   nmake -f Makefile.msvc DLL=1
MFLAGS=-MD
   等ok後,再輸入如下命令
   nmake -f Makefile.msvc DLL=1
MFLAGS=-MD install
   4.編譯並安裝支援國際化的iconv
   開啟VC9的Visual Studio 2008
Command Prompt,再轉到libvime目錄下,輸入如下命令
    nmake -f
Makefile.msvc DLL=1 MFLAGS=-MD
   等ok後,再輸入如下命令
   nmake -f Makefile.msvc DLL=1
MFLAGS=-MD install

  
之所以這麼麻煩,就是因為這倆庫相互依賴,所以編譯順序是libiconv->gettext->libiconv

  
注意一定要在c:/usr下進行編譯,否則會出錯誤的。(linux下的庫就是噁心...)
   如果還不明白的話,就看下libvmime下的README.msvc,希望有協助...

  (二)libsasl編譯
  
libsasl的庫編譯比較簡單,裡面有sln的工程檔案,開啟直接build就可以了,不過1.6貌似編譯不過,1.4就可以

  (三)gnutls編譯
  
gnutls的編譯比較奇葩,下載它的一個exe安裝程式,安裝完成後,用VC9的Visual Studio 2008 Command
Prompt進到它的安裝目錄下(C:\Program
Files\GnuTLS\bin),然後輸入如下命令:
   lib
/def:libgnutls-26.def
  
   This will create a
libgnutls-26.lib that can be used as a import library for Visual
Studio projects.
   Build a sample program to test
it as follows:
   C:\Program
Files\GnuTLS\bin>cl foo.c -I../include
-Dssize_t=long libgnutls-26.lib ... C:\Program
Files\GnuTLS\bin>foo foo 1.6.0 C:\Program
Files\GnuTLS\bin>
  
參考:http://josefsson.org/gnutls4win/
   Using the GnuTLS DLL from your Visual Studio
program一欄
  

  (四)vmime編譯
  
將前面編譯過的include下的標頭檔都放到VC9的目錄(../VC/include)下,將lib檔案都放到VC9的目錄(../VC/lib)目錄下,然後開啟vmime中提供的sln工程檔案,build,成功!

  
如果vmime編譯過程中出現了一個比較蛋疼的錯誤,如ssize_t未定義等,可以把vmime目錄下的src檔案remove,然後rebuild,應該就可以了

相關文章

聯繫我們

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