thrift windows vs2013编译lib

1、首先从官网下载安装包

https://thrift.apache.org/download
或者从git地址中获取:https://github.com/apache/thrift
目前的最新版为thrift-0.9.3

2、解压后用vs2013打开里面的cpp lib

用vs2013打开此路径下的sln文件:
thrift-master\lib\cpp
升级一下:
thrift windows vs2013编译lib_第1张图片

可以看到就只有两个lib工程(1个阻塞的libthrift,另一个是非阻塞的libthriftnb):
thrift windows vs2013编译lib_第2张图片

3、下载thrift的依赖项目

主要依赖有libevent,通过下面的链接把他下载下来
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libevent.html
下载下来的文件解压(放到目录\thrift-master\lib\cpp)即可,在thrift是直接引入的,并不需要对libevent进行编译
配置的时候需要加入libevent头文件目录即可(libthrift非阻塞,并不需要依赖libthrift):
;.\libevent-2.0.22-stable;.\libevent-2.0.22-stable\include;.\libevent-2.0.22-stable\WIN32-Code;

其次是boost,这个是需要编译的,项目地址如下:
http://www.boost.org/
最新版本是Version 1.60.0
编译可以参考blog:
http://blog.csdn.net/zengraoli/article/details/51322484
配置的时候,需要加入头文件和库目录:
D:\boost_1_57_0;
D:\boost\boost_1_57_0\bin\vc12-x64\lib;

总的依赖头文件如下:
D:\boost_1_57_0;.\libevent-2.0.22-stable;.\libevent-2.0.22-stable\include;.\libevent-2.0.22-stable\WIN32-Code;

库目录:
D:\boost\boost_1_57_0\bin\vc12-x64\lib;

4、最重要的一步,需要在项目中引入TServerFramework和TConnectedClient

否则你可能会出现这样的错误:
thrift windows vs2013编译lib_第3张图片
所以建议直接下载patch(已经提交给项目组,下一个版本可以更新出来)替换到lib工程目录(\thrift-master\lib\cpp\)下
http://download.csdn.net/detail/zengraoli/9508621

然后,你要把TServerFramework.cpp和TConnectedClient.cpp中的内容移到TServerFramework.h和TConnectedClient.h中,然后在libthrift项目中移除这两个cpp!十分重要!否则release-mt中依旧会报错!
thrift windows vs2013编译lib_第4张图片

5、对整个解决方案进行编译

会出现如下的问题(如果将多个CL.EXE写入同一个.PDB文件,请使用/FS):
thrift windows vs2013编译lib_第5张图片
需要对两个项目加入/FS
打开
thrift windows vs2013编译lib_第6张图片
重新编译之后,便可以在测试例子中使用,测试例子在下一个文档中

6、编译OpenSSL

在编译对应的lib文件时,并不需要引入openssl,仅当调用使用thrift的时候,加入了头文件TServerTransport.h才需要到openssl,这里也并附上openssl的编译方式

准备工作:
安装perl,http://www.activestate.com/activeperl/downloads;
下载openssl源码版本: openssl-1.0.2h

开始编译(32位):
命令行启动vs2013,省去设置环境变量的麻烦;
1、cd openssl-1.0.2h, 执行 “perl Configure VC-WIN32”,配置编译环境;
2、执行“ms\do_ms.bat”, 生成配置文件;
3、执行“nmake -f ms\nt.mak(动态库则是ntdll.mak) ”,执行编译、链接;
编译结果在out32dll目录下,这样执行的是动态链接;

执行:nmake -f ms/nt.mak
该命令生成静态库,默认使用的是MT,生成的静态库输出到out32目录下。

修改运行库的链接方式,修改ntdll.mak里面的“CFLAG= /MD /Ox …………..” 为/MT,然后重新编译,执行
其它命令:
nmake -f ms/ntdll.mak clean // 清除编译的中间文件
nmake -f ms/ntdll.mak install // 安装,主要是linux下面会自动放到程序目录中

开始编译(64位):
命令行启动vs2013,省去设置环境变量的麻烦;
1、cd openssl-1.0.2h, 执行 “perl Configure VC-WIN64A”,配置编译环境;
2、执行“ms\do_ms.bat”, 生成配置文件;
3、执行“nmake -f ms\nt.mak(动态库则是ntdll.mak) ”,执行编译、链接;
编译结果在out32dll目录下,这样执行的是动态链接;

执行:nmake -f ms/nt.mak
该命令生成静态库,默认使用的是MT,生成的静态库输出到out32目录下。

修改运行库的链接方式,修改ntdll.mak里面的“CFLAG= /MD /Ox …………..” 为/MT,然后重新编译,执行
其它命令:
nmake -f ms/ntdll.mak clean // 清除编译的中间文件
nmake -f ms/ntdll.mak install // 安装,主要是linux下面会自动放到程序目录中

你可能感兴趣的:(windows,thrift,Visual,Studio,VS2013)