NN protobuf改为动态库编译

①、

将..\protobuf-3.5.1\cmake\CMakeLists.txt中

“cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" ON”

改为

cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" OFF

②、

在“..\protobuf-3.5.1\cmake\”文件夹下新建文件夹“build”

cd 进入“..\protobuf-3.5.1\cmake\build\”文件夹

执行命令“cd ..”,等待文件生成

③、(此步为观察操作)

此时生成的工程默认“运行库”就是“多线程调试 DLL (/MDd)”,可选中libprotobuf、libprotobuf-lite、libprotoc、protoc四个项目,右键->属性,打开属性页。“C/C++”  ->  "代码生成"  -->  "运行库",观察是否为“多线程调试 DLL(/MDd)”

④、

选择  “64位"  “debug”

右键“解决方案”,点击“重新生成解决方案”,将文件夹“..\Src\protobuf-3.5.1\cmake\build\Debug\”新生成的“libprotobufd.lib” ,复制到文件夹“..\Bin\Windows-x64\Debug\MD\” 下,并改名为“libprotobuf.lib”

⑤、

在“..\Src\protobuf-3.5.1\cmake\build\Debug\”目录下新建文件“Common.proto”,复制以下内容到文件中:

syntax = "proto2";
package Common;
option java_package = "com.futu.openapi.pb";
option go_package = "github.com/futuopen/ftapi4go/pb/common";


//返回结果
enum RetType
{
    RetType_Succeed = 0; //成功
    RetType_Failed = -1; //失败
    RetType_TimeOut = -100; //超时
    RetType_DisConnect = -200; //连接断开
    RetType_Unknown = -400; //未知结果
    RetType_Invalid = -500; //包内容非法
}

//包加密算法
enum PacketEncAlgo
{
    PacketEncAlgo_FTAES_ECB = 0; //富途修改过的AES的ECB加密模式
    PacketEncAlgo_None = -1; //不加密
    PacketEncAlgo_AES_ECB = 1; //标准的AES的ECB加密模式
    PacketEncAlgo_AES_CBC = 2; //标准的AES的CBC加密模式
}

//包的唯一标识,用于回放攻击的识别和保护
message PacketID
{
    required uint64 connID = 1; //当前TCP连接的连接ID,一条连接的唯一标识,InitConnect协议会返回
    required uint32 serialNo = 2; //自增序列号
}

//协议格式,请求协议在请求头中指定,推送协议在Init时指定
enum ProtoFmt
{
    ProtoFmt_Protobuf = 0; //Google Protobuf格式
    ProtoFmt_Json = 1; //Json格式
}

//用户注册归属地
enum UserAttribution
{
    UserAttribution_Unknown = 0; //
    UserAttribution_NN = 1; //大陆
    UserAttribution_MM = 2; //MooMoo
    UserAttribution_SG = 3; //新加坡
    UserAttribution_AU = 4; //澳洲
    UserAttribution_JP = 5; //日本
    UserAttribution_HK = 6; //香港
}

enum ProgramStatusType
{
    ProgramStatusType_None = 0;
    ProgramStatusType_Loaded = 1; //已完成类似加载配置,启动服务器等操作,服务器启动之前的状态无需返回

    ProgramStatusType_Loging = 2; //登录中
    ProgramStatusType_NeedPicVerifyCode = 3; //需要图形验证码
    ProgramStatusType_NeedPhoneVerifyCode = 4; //需要手机验证码
    ProgramStatusType_LoginFailed = 5; //登录失败,详细原因在描述返回
    ProgramStatusType_ForceUpdate = 6; //客户端版本过低

    ProgramStatusType_NessaryDataPreparing = 7; //正在拉取类似免责声明等一些必要信息
    ProgramStatusType_NessaryDataMissing = 8; //缺少必要信息
    ProgramStatusType_UnAgreeDisclaimer = 9; //未同意免责声明
    ProgramStatusType_Ready = 10; //可以接收业务协议收发,正常可用状态
    
    //OpenD登录后被强制退出登录,会导致连接全部断开,需要重连后才能得到以下该状态(并且需要在ui模式下)
    ProgramStatusType_ForceLogout = 11; //被强制退出登录,例如修改了登录密码,中途打开设备锁等,详细原因在描述返回

    ProgramStatusType_DisclaimerPullFailed = 12; //拉取免责声明标志失败
}

message ProgramStatus
{
    required ProgramStatusType type = 1; //当前状态
    optional string strExtDesc = 2; // 额外描述
}

⑥、

cd 到 “....\Src\protobuf-3.5.1\cmake\build\Debug\”文件夹下,

cmd执行命令行“protoc --cpp_out=. .\Common.proto”

⑦、

将⑥中生成的文件“Common.pb.cc” 、 “Common.pb.h” 复制到 "../Include/Proto/"下面

⑧、

打开工程“\Src\FTAPI.sln”,选择  “64位"  “debug”

右键“解决方案”,“属性”,“常规”,“平台工具集”,“Visual Studio 2019(v142)”

右键工程,“重新生成”,默认生成文件“..\Bin\Windows-x64\Debug\MD\FTAPI.lib”

打开工程“\Sample\SimpleSample\SimpleSample.sln”,选择  “64位"  “debug”

在文件“simpleSample.cpp”中加上“#include "FTAPI.h"”;

右键“解决方案”,“属性”,“连接器”,“输入”,“附加依赖项”,中添加“FTAPIChannel.lib”

重新生成解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值