|
| 1 | +# 集成 SDK(Windows) |
| 2 | + |
| 3 | +本文介绍如何快速地将腾讯云的 TcrSdk 集成到项目中,只要按照如下步骤进行操作,可以轻松完成 TcrSdk 的集成工作。 |
| 4 | +## 开发环境要求 |
| 5 | + |
| 6 | +- 操作系统:推荐 Windows 10。 |
| 7 | +- 开发环境:推荐使用 Visual Studio 2019。 |
| 8 | + |
| 9 | +## 集成 TcrSdk |
| 10 | + |
| 11 | +下面通过创建一个简单的 MFC 项目,介绍如何在 Visual Studio 2019 工程中集成 SDK。 |
| 12 | +### 步骤1. 下载 TcrSdk |
| 13 | + |
| 14 | + |
| 15 | +|目录名 |说明 | |
| 16 | +|--|--| |
| 17 | +|includes |接口头文件 | |
| 18 | +|libs\x86| **32位**,采用 /MT 选项链接库文件 | |
| 19 | +|libs\x64| **64位**,采用 /MT 选项链接库文件 | |
| 20 | +### 步骤2. 新建工程 |
| 21 | + |
| 22 | +打开 Visual Studio,新建一个名为 TcrDemo 的 Windows桌面应用程序 |
| 23 | +### 步骤3. 拷贝文件 |
| 24 | + |
| 25 | +将解压后的 tcrsdk 文件夹拷贝到 TcrDemo.vcxproj 所在目录下,如下图所示: |
| 26 | + |
| 27 | +### 步骤4. 修改工程配置 |
| 28 | + |
| 29 | +TcrSdk 提供了 **x64** 和 **x86** 两种编译生成的静态库,针对这两种有些地方要专门配置。打开 TcrDemo 属性页,在**解决方案资源管理器**>**TcrDemo工程的右键菜单**>**属性**。 |
| 30 | +以**x64**为例,请按照以下步骤进行配置: |
| 31 | +1. 添加包含目录 |
| 32 | + 在 **C/C++**>**常规**>**附件包含目录**,添加 tcrsdk 头文件目录 $(ProjectDir)tcrsdk\include,如下图所示: |
| 33 | +<br><br> |
| 34 | +<img src="docs/images/接入SDK添加包含目录.png" width="700px"> |
| 35 | +<br><br> |
| 36 | +2. 添加库目录 |
| 37 | + 在 **链接器**>**常规**>**附加库目录**,添加 tcrsdk 库目录 $(ProjectDir)tcrsdk\libs\x64 |
| 38 | +<br><br> |
| 39 | +<img src="docs/images/接入SDK添加库目录.png" width="700px"> |
| 40 | +<br><br> |
| 41 | +3. 添加库文件 |
| 42 | + 在 **链接器**>**输入**>**附加依赖项**,添加 tcrsdk 库文件 TcrSdk-Win.lib ,如下图所示: |
| 43 | +<br><br> |
| 44 | +<img src="docs/images/接入SDK添加库文件.png" width="700px"> |
| 45 | +<br><br> |
| 46 | +4. 拷贝 DLL 到执行目录 |
| 47 | + 在**生成事件**>**生成前事件**>**命令行**,输入 `xcopy /E /Y "$(ProjectDir)tcrsdk\libs\x64" "$(OutDir)"` ,拷贝 TcrSdk-Win.dll 动态库文件到程序生成目录,如下图所示: |
| 48 | +<br><br> |
| 49 | +<img src="docs/images/接入SDK生成前事件.png" width="700px"> |
| 50 | +<br><br> |
| 51 | +5. 更改代码生成方式 |
| 52 | +在**代码生成**>**运行库**,改为“多线程/MT” |
| 53 | +<br><br> |
| 54 | +<img src="docs/images/接入SDK更改代码生成.png" width="700px"> |
| 55 | +<br><br> |
| 56 | +6. 运行,创建TcrSession |
| 57 | + |
| 58 | +* 添加头文件 |
| 59 | +``` |
| 60 | +#include "tcr_session.h" |
| 61 | +``` |
| 62 | +* 实现TcrSession::Observer |
| 63 | +``` |
| 64 | +class TcrObserver : public tcrsdk::TcrSession::Observer { |
| 65 | + void onEvent(tcrsdk::TcrSession::Event event, const char* eventData) |
| 66 | + { |
| 67 | + switch (event) |
| 68 | + { |
| 69 | + case tcrsdk::TcrSession::STATE_INITED: |
| 70 | + //do something |
| 71 | + break; |
| 72 | + case tcrsdk::TcrSession::STATE_CONNECTED: |
| 73 | + //do something |
| 74 | + break; |
| 75 | + case tcrsdk::TcrSession::STATE_CLOSED: |
| 76 | + //do something |
| 77 | + break; |
| 78 | + case tcrsdk::TcrSession::CLIENT_STATS: |
| 79 | + //do something |
| 80 | + break; |
| 81 | + case tcrsdk::TcrSession::GAME_START_COMPLETE: |
| 82 | + //do something |
| 83 | + break; |
| 84 | + case tcrsdk::TcrSession::ARCHIVE_LOAD_STATUS: |
| 85 | + //do something |
| 86 | + break; |
| 87 | + case tcrsdk::TcrSession::ARCHIVE_SAVE_STATUS: |
| 88 | + //do something |
| 89 | + break; |
| 90 | + case tcrsdk::TcrSession::INPUT_STATUS_CHANGED: |
| 91 | + //do something |
| 92 | + break; |
| 93 | + case tcrsdk::TcrSession::REMOTE_DESKTOP_INFO: |
| 94 | + //do something |
| 95 | + break; |
| 96 | + case tcrsdk::TcrSession::SCREEN_CONFIG_CHANGE: |
| 97 | + //do something |
| 98 | + break; |
| 99 | + case tcrsdk::TcrSession::CURSOR_IMAGE_INFO: |
| 100 | + //do something |
| 101 | + break; |
| 102 | + case tcrsdk::TcrSession::CURSOR_STATE_CHANGE: |
| 103 | + //do something |
| 104 | + break; |
| 105 | + default: |
| 106 | + break; |
| 107 | + } |
| 108 | + } |
| 109 | +}; |
| 110 | +``` |
| 111 | +* 创建TcrSession |
| 112 | +``` |
| 113 | + tcrsdk::TcrSession* tcrSession = new tcrsdk::TcrSession(new TcrObserver()); |
| 114 | +``` |
0 commit comments