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,应该就可以了
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一栏
将前面编译过的include下的头文件都放到VC9的目录(../VC/include)下,将lib文件都放到VC9的目录(../VC/lib)目录下,然后打开vmime中提供的sln工程文件,build,成功!
如果vmime编译过程中出现了一个比较蛋疼的错误,如ssize_t未定义等,可以把vmime目录下的src文件remove,然后rebuild,应该就可以了