1、使用cmake_tars_serve.sh生成模板
/usr/local/tars/cpp/script/cmake_tars_server.sh TestApp StructServer Struct
生成结构如下
2、进入src目录,修改Struct.tars文件,增加testStruct(…)函数
3、删除Struct.h,执行指令:
/usr/local/tars/cpp/tools/tars2cpp Struct.tars
重新生成Struct.h
4、打开Struct.h,查找Tars转化后testStruct(…)的定义:
将函数的定义复制粘贴到StructImpl.h中:
在StructImp.cpp中实现testStruct函数:
5、再次进入build目录下,执行如下
cmake .. make -j4 make tar
build目录下会生成打包文件
6、编写客户端代码
将服务端的Struct.tars、Struct.h文件拷贝到客户端,新建main.cpp
#include <iostream> #include "servant/Communicator.h" #include "Calc.h" using namespace std; using namespace TestApp; using namespace tars; int main(int argc,char ** argv) { Communicator comm; try { CalcPrx prx; comm.stringToProxy("TestApp.CalcServer.CalcObj@tcp -h 192.168.28.129 -p 27222" , prx); // -h xxx 填对应的地址 try { float ret = 0.f; int iRet = prx->testCalc(5.1, 6.3, ret); // 同步调用 cout<<"ret:"<< ret <<endl; } catch(exception &ex) { cerr << "ex:" << ex.what() << endl; } catch(...) { cerr << "unknown exception." << endl; } } catch(exception& e) { cerr << "exception:" << e.what() << endl; } catch (...) { cerr << "unknown exception." << endl; } return 0; }
新建Makefile文件
#----------------------------------------------------------------------- APP :=TestApp TARGET :=TestStruct CONFIG := STRIP_FLAG := N LIB += #----------------------------------------------------------------------- include /usr/local/tars/cpp/makefile/makefile.tars #-----------------------------------------------------------------------
执行make,然后执行./TestStruct。
常见报错分析:
可能原因:
1、服务端代码写法有问题:
注意:要写Tars框架的数据类型,转换关系如下:
2、客户端代码的proxy写法有问题:
到不到对应的proxy,最终查找失败报错。