墨香年少 32 发布于 2023年3月9日 1-解压缩thrift库,假设解压缩到D:\workfile\thrift-0.13.0下 2-将D:\workfile\thrift-0.13.0\config.h文件拷贝到D:\workfile\thrift-0.13.0\lib\cpp\src\thrift目录下,防止编译的时候找不到config.h的错误 3-修改拷贝过去的config.h文件,将所有HAVE开头的宏都注释掉; 4-使用VS编译器打开D:\workfile\thrift-0.13.0\lib\cpp\thrift.sln解决方案文件 5-打开后可以看到libthrift和libthriftnb两个工程,将这两个工程分别配置 属性->C/C++->常规->附加包含目录:添加D:/workfile/boost_1_75和libevent的include目录以及openssl的include目录 属性->库管理器->常规->附加库目录:添加boost编译生成的lib目录,libevent编译生成的lib目录以及openssl的lib目录 6-从工程中移除报错的文件,这些文件是以前版本残留的文件,实际不存在,具体在concurrency下的BoostMonitor.h,BoostMonitor.cpp,Util.cpp等文件,实际文件以编译器报错为准 7-将D:\workfile\thrift-0.13.0\lib\cpp\src\thrift\concurrency目录中的所有的.h和.cpp文件都添加到工程中(因为默认的工程中缺少一些文件) 8-从工程中打开transport/TSSLSocket.h 9-在打开文件中,搜索THRIFT_EXPORT static bool manualOpenSSLInitialization_;删除这句代码中的THRIFT_EXPORT 10-属性->C/C++->预处理器:添加thrift_EXPORTS;预处理 11-编译debug和release 3.1.4.2.使用说明 1-项目工程目录包含boost,libevent,openssl,thrift的include目录 2-库管理器下包含boost,libevent,openssl,thrift的lib目录 3-引用.lib文件 Thrift:libthrift.lib;libthriftnb.lib; Libevent:libevent.lib; Openssl:libssl.lib;libcrypto.lib; 4-属性->C/C++->预处理器:添加thrift_EXPORTS;预处理 5-Release模式下属性->C/C++->优化:全程序优化选是GL 6-Debug模式下属性->C/C++->优化:全程序优化选否 3.1.4.3.QA 1-工程编译时发现错误/警告如下: 错误:无法解析的外部符号class apache::thrift::TOutput apache::thrift::GlobalOutput…… 警告:ClientService.obj : warning LNK4049: 已导入本地定义的符号 ?GlobalOutput@thrift@apache@@3VTOutput@12@A (class apache::thrift::TOutput apache::thrift::GlobalOutput)0 解决方案:thrift工程和项目工程中需要添加预处理thrift_EXPORTS;属性->C/C++->预处理器 thrift-0.13.0.exe thrift-0.13.0.tar.gz 目之所及,皆是回忆,心之所想,皆是过往 分享这篇帖子 链接帖子 分享到其他站点
墨香年少 32 发布于 2023年3月9日 简单的时间回显的服务端和客户端的VS项目源码 ThriftTest.zip time.thrift: service TimeService { i32 TellMeTime() } 输入命令: thrift -gen cpp .\time.thrift 目之所及,皆是回忆,心之所想,皆是过往 分享这篇帖子 链接帖子 分享到其他站点