本文主要目的是分別介紹在windows平台下的thrift安裝步驟,以及實現乙個簡單的demo演示thrift的使用方法。
安裝依賴庫:
boost
libevent(按需安裝,例項中我沒有使用)
0.10.0版本的cpp編譯比較容易成功,編譯64位版本的libthrift.lib,開啟thrift-0.10.0\lib\cpp\thrift.sln,裡面有libthrift和libthriftnb兩個工程,其中libthrift工程是常規的阻塞型server端(單執行緒server,乙個連線乙個執行緒server,執行緒池server),libthriftnb工程是非阻塞(non-blocking)模式的服務server端,也只有編譯libthriftnb時才需要依賴libevent庫,否則可以不編譯libevent庫;編譯libthrift只要把正確的boost路徑和openssl路徑配置正確,就可以編譯成功了。
設計thrift檔案(idl)
namespace
cpphellothrift.inte***ce
service
helloservice
通過idl工具生成源**# 執行thirift命令生成原始檔:
thrift-0.9
.3.exe --gen cpp hello.thrift
以上命令生成c++語言的源**,然後會生成乙個gen-cpp目錄,裡面包含自動生成的幾個源**檔案:
實現server程式
helloservice_server.skeleton.cpp就是預設的server端程式入口,拷貝乙份重新命名為server.cpp,通過vs2015新建工程,將gen-cpp目錄下的所有檔案複製到新工程下,設定標頭檔案包含和lib庫目錄。 比如設定libthrift.lib的頭檔案目錄為thrift-0.9.3\lib\cpp\src,lib庫目錄為thrift-0.9.3\lib\cpp\x64\debug。
在server.cpp中新增**邏輯,然後編譯。
class helloservicehandler : virtual
public helloserviceif
void hellostring(std::string& _return, const
std::string& para)
int32_t helloint(const int32_t para)
bool helloboolean(const
bool para)
void hellovoid()
void hellonull(std::string& _return)
};
實現client程式通過vs2015新建工程,將gen-cpp目錄下的所有檔案複製到新工程下(除helloservice_server.skeleton.cpp之外),並增加上面手動實現的client.cpp,設定標頭檔案包含和lib庫目錄。
#include
#include
#include
#include
#include
#include
#include
#include "hello_types.h"
#include "helloservice.h"
#include "hello_constants.h"
using
namespace ::apache::thrift;
using
namespace ::apache::thrift::protocol;
using
namespace ::apache::thrift::transport;
using
namespace ::apache::thrift::server;
using
namespace hellothrift::inte***ce;
using boost::shared_ptr;
int main(int argc, char** argv)
catch (texception& tx)
}
編譯
執行server程式和client程式
所有工程檔案已放到github上
C 下新增C 動態庫
這個網上很多。但是沒有能執行起來的。自己經過一周多的摸索進行稍微總結下。首先是 c 下的宣告 標頭檔案 extern c declspec dllexport intadd intsm cpp檔案 intadd intsm 標頭檔案 extern c declspec dllexport intad...
Linux 下C和C 程式設計
最近在學linux,決心用這個系統進行開發工作,所以,無論是進行開發工作,還是在oj上刷題,學會linux下的c和c 程式設計都是很有必要的。1,先有linux環境 搭mingw和cygwin都有點麻煩,最最簡單的辦法還是裝個真正的linux,用虛擬機器也好,在網路上的另一台機器也好。這樣不僅快,而...
C 於C 的拓展(下)
72 程序 乙個程式的動態執行過程。73 process類 程序類 74 前台程序和後台程序 所有前台程序停止時,後台程序自動停止。75 cpu執行速度快,i o介面速度慢,充分利用cpu完成其他操作的同時,可以開個執行緒給i o介面 比如 鍵盤輸入 76 thread類 常用的兩種過載形式 pub...