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,應該就可以了