本文主要介绍如何快速地将腾讯云 TRTC SDK(QT 的 Windows 和 Mac 版本)集成到您的项目中,只要按照如下步骤进行配置,就可以快速完成 SDK 的集成工作。
Windows 端集成
开发环境要求
操作系统:Windows 7及以上版本。
开发环境:Visual Studio 2015及以上版本,推荐使用 Visual Studio 2015,前提是您已经配置好 VS 相关的 QT 开发环境。
说明
操作步骤
本节通过创建一个简单的 QT 项目,介绍如何在 Visual Studio 工程中集成 C++ SDK。
步骤1:下载 SDK
1. 下载 SDK,解压并打开。
本文示例中,您只需要引用 SDK 目录下 C++ 版的 SDK 文件即可。以64位为例,其 SDK 位置为
./SDK/CPlusPlus/Win64/
下,主要包含以下几个部分:目录名 | 说明 |
include | 带有详细接口注释的 API 头文件 |
lib | 编译用的 .lib 文件和运行时加载的 .dll 文件 |
步骤2:新建工程
以 Visual Studio 2015 为例,在确保本地已经安装了 QT 和 VS 开发插件 的前提下,打开 Visual Studio。新建一个名字叫
TRTCDemo
的 QT 应用程序,如下图所示:
为了便于介绍如何快速集成,在向导中我们选择 Qt Widgets Application 类型,单击确定,在之后的页面中单击 Next 直到工程创建完成即可。步骤3:拷贝文件
将解压后的 SDK 文件夹拷贝到 TRTCDemo.vcxproj 所在目录下,如下图所示:
说明
当前只需要 C++ SDK,可以将 SDK 路径下的 CSharp 目录删除。
步骤4:修改工程配置
打开 TRTCDemo 属性页,在解决方案资源管理器 >TRTCDemo 工程的右键菜单 > 属性,请按照以下步骤进行配置:
1. 添加包含目录:
在 C/C++ > 常规 > 附加包含目录,以64位为例,添加 SDK 头文件目录
$(ProjectDir)SDK\\CPlusPlus\\Win64\\include
和 $(ProjectDir)SDK\\CPlusPlus\\Win64\\include\\TRTC
,如下图所示:说明
如果为32位,则需要将 SDK 头文件目录设为
$(ProjectDir)SDK\\CPlusPlus\\Win32\\include
和 $(ProjectDir)SDK\\CPlusPlus\\Win32\\include\\TRTC
。
2. 添加库目录:
在链接器 > 常规 > 附加库目录,以64位为例,添加 SDK 库目录
$(ProjectDir)SDK\\CPlusPlus\\Win64\\lib
,如下图所示:说明
如果为32位,则需要将 SDK 库目录设为
$(ProjectDir)SDK\\CPlusPlus\\Win32\\lib
。
3. 添加库文件:
在链接器 > 输入 > 附加依赖项,添加 SDK 库文件
liteav.lib
,如下图所示:
4. 添加 copy 命令:
在生成事件 > 后期生成事件 > 命令行,添加拷贝命令
copy /Y $(ProjectDir)SDK\\CPlusPlus\\Win64\\lib\\*.dll $(OutDir)
,能够在编译完成后,自动将 SDK 的 .dll 文件拷贝到程序的运行目录下,如下图所示:说明
如果为32位,则添加拷贝命令为
copy /Y $(ProjectDir)SDK\\CPlusPlus\\Win32\\lib\\*.dll $(OutDir)
。
步骤5:打印 SDK 版本号
1. 在
TRTCDemo.cpp
文件顶部增加头文件引入,代码如下:#include "ITRTCCloud.h"#include <QLabel>
2. 在
TRTCDemo.cpp
文件的TRTCDemo::TRTCDemo
构造函数中,添加下面的测试代码:ITRTCCloud * pTRTCCloud = getTRTCShareInstance();std::string version(pTRTCCloud->getSDKVersion());QString sdk_version = QString("SDK Version: %1").arg(version.c_str());QLabel* label_text = new QLabel(this);label_text->setAlignment(Qt::AlignCenter);label_text->resize(this->width(), this->height());label_text->setText(sdk_version);
3. 按键盘 F5 运行,打印 SDK 的版本号,如下图所示:
Mac 端集成
开发环境要求
操作系统:Mac OS X 12.2及以上版本。
开发环境:xcode 13.2.1及以上版本;Qt Creator 4.10.3及以上版本,推荐使用 Qt Creator 4.13.3及以上。
开发框架:Based on Qt 5.9及以上版本。
其他要求:项目已配置有效的开发者签名。
操作步骤
本节以创建一个简单的 QTDemo 项目为例,介绍如何在 Qt Creator 工程中集成 C++ 跨平台 SDK。
1. 下载 C++ 跨平台 SDK
1.1 下载 SDK,解压并打开文件。
1.2 在您的 QTDemo 目录下新建一个空的 SDK 目录,将步骤 1.1 下载的 SDK 中
TXLiteAVSDK_TRTC_Mac/TXLiteAVSDK_TRTC_Mac.framework
、TXLiteAVSDK_TRTC_Mac/TXFFmpeg.xcframework
、TXLiteAVSDK_TRTC_Mac/TXSoundTouch.xcframework
拷贝到您新建的 SDK 目录下。2. 新建 QT 项目
2.1. 使用 Qt Creator 创建一个新项目,如下图所示:
选择新建一个 Qt Widgets Application 模板应用程序。
2.2. 构建系统选择 qmake,如下图所示:
选择完成后点击继续,直到 Kits 套件选择。
2.3. 选择 Kits 开发套件,如下图所示:
选择套件后点击继续,直到完成。
3. 配置 QTDemo.pro
打开 QTDemo 工程目录,使用一任意文本编辑器打开
QTDemo.pro
文件,然后添加 TRTC SDK 库依赖相关配置,部分代码如下:QMAKE_INFO_PLIST += Info.plistINCLUDEPATH += $$PWD/.DEPENDPATH += $$PWD/.# 添加TXLiteAVSDK_TRTC_Mac.framework头文件INCLUDEPATH += $$PWD/SDK/TXLiteAVSDK_TRTC_Mac.framework/Headers/cpp_interfaceINCLUDEPATH += $$PWD/SDK/TXLiteAVSDK_TRTC_Mac.framework/Headers# 引用TXLiteAVSDK_TRTC_Mac库LIBS += "-F$$PWD/SDK"LIBS += -framework TXLiteAVSDK_TRTC_Mac# 引用的系统库QMAKE_CXXFLAGS += -x objective-c++LIBS += -framework AccelerateLIBS += -framework AudioUnitLIBS += -lbz2LIBS += -lresolvLIBS += -framework AppKitLIBS += -framework FoundationLIBS += -framework CoreFoundationLIBS += -framework CocoaLIBS += -framework SecurityLIBS += -framework SystemConfigurationLIBS += -framework JavaScriptCoreLIBS += -framework CoreMediaLIBS += -framework CoreAudioLIBS += -framework CoreVideoLIBS += -framework CoreImageLIBS += -framework AVFoundationLIBS += -framework AudioToolboxLIBS += -framework VideoToolboxLIBS += -framework MetalKitLIBS += -framework MetalLIBS += -framework CoreTelephonyLIBS += -framework CoreGraphicsLIBS += -framework OpenGLLIBS += -framework OpenALLIBS += -framework QuartzCoreLIBS += -lzLIBS += -ObjC# TXFFmpeg库的使用LIBS += -F$$PWD/SDK/TXFFmpeg.xcframework/macos-arm64_x86_64LIBS += -framework TXFFmpegTXFFmpeg_FRAMEWORK.files = $$PWD/SDK/TXFFmpeg.xcframework/macos-arm64_x86_64/TXFFmpeg.frameworkTXFFmpeg_FRAMEWORK.path = /Contents/FrameworksQMAKE_BUNDLE_DATA += TXFFmpeg_FRAMEWORK# TXSoundTouch库的使用LIBS += -F$$PWD/SDK/TXSoundTouch.xcframework/macos-arm64_x86_64LIBS += -framework TXSoundTouchTXSoundTouch_FRAMEWORK.files = $$PWD/SDK/TXSoundTouch.xcframework/macos-arm64_x86_64/TXSoundTouch.frameworkTXSoundTouch_FRAMEWORK.path = /Contents/FrameworksQMAKE_BUNDLE_DATA += TXSoundTouch_FRAMEWORK# 运行时库路径rpath的添加QMAKE_LFLAGS += -Wl -ObjCQMAKE_LFLAGS += -Wl,-rpath,@executable_path/../Frameworks/# usersig的相关引用LIBS += "-F$$PWD/base/util/mac/usersig"INCLUDEPATH += $$PWD/base/util/mac/usersig/includeDEPENDPATH += $$PWD/base/util/mac/usersig/include
4. 授权摄像头和麦克风使用权限
因为 TRTC SDK 会使用您的摄像头和麦克风,所以您需要在对应的
Info.plist
添加对应的权限申请说明:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>NSMicrophoneUsageDescription</key><string>申请使用麦克风</string><key>NSCameraUsageDescription</key><string>申请使用摄像头</string><key>NSPrincipalClass</key><string>NSApplication</string><key>CFBundleIconFile</key><string></string><key>CFBundlePackageType</key><string>APPL</string><key>CFBundleGetInfoString</key><string>Created by Qt/QMake</string><key>CFBundleSignature</key><string>1</string><key>CFBundleExecutable</key><string>QTDemo</string><key>CFBundleIdentifier</key><string>apophis.QTDemo</string><key>NOTE</key><string>This file was generated by Qt/QMake.</string></dict></plist>
如下图所示:
5. 使用 TRTC SDK
您可以通过头文件
#include "ITRTCCloud.h"
直接引用。使用命名空间:C++ 全平台接口的方法、类型等均定义在 trtc 命名空间中,为了让代码更加简洁,建议您直接使用 trtc 命名空间。
说明
常见问题
若出现以下错误,请按照前面的工程配置,检查 SDK 头文件的目录是否正确添加。
fatal error C1083: 无法打开包括文件: “TRTCCloud.h”: No such file or directory
若出现提示无法打开 "xxx.framework",因为无法验证开发者,可以在系统的安全性和隐私里面进行允许设置,如下:
若出现以下错误,请按照前面的工程配置,检查 SDK 库目录和库文件是否正确添加。
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class TXString __cdecl TRTCCloud::getSDKVersion(void)" (__imp_?getSDKVersion@TRTCCloud@@SA?AVTXString@@XZ),该符号在函数 "protected: virtual int __thiscall CTRTCDemoDlg::OnInitDialog(void)" (?OnInitDialog@CTRTCDemoDlg@@MAEHXZ) 中被引用