zoukankan      html  css  js  c++  java
  • compile vmime on windows with msvc9

    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,应该就可以了
  • 相关阅读:
    spring mvc中的@PathVariable
    JSP禁用缓存的方式 response.setHeader( "Pragma", "no-cache" ); setDateHeader("Expires", 0);
    request.getSession(true)和request.getSession(false)的区别
    Spring Mvc中DispatcherServlet和Servlet的区别小结
    web.xml中load-on-startup的作用
    Spring MVC过滤器-字符集过滤器(CharacterEncodingFilter)
    web.xml配置中的log4jRefreshInterval
    web.xml中webAppRootKey
    关于tolua的使用
    关于#pragma pack
  • 原文地址:https://www.cnblogs.com/qiuyeyaozhuai/p/2719061.html
Copyright © 2011-2022 走看看