集成 Windows/macOS SDK
更新时间: 2024/10/31 15:19:46
网易云信即时通讯(NetEase IM)SDK V10(以下简称 NIM SDK)融合了 V9 接口,本文介绍如何集成 NIM macOS/Windows SDK 到您的项目中。请前往 资源下载 页面获取 SDK。
SDK 目录
为降低接入成本,NIM SDK C++ 封装层使用 CMake 进行管理,根据不同的情况您在接入 C++ 封装层时可能需要适当的修改。SDK 目录拆分为如下结构:
sh├─bin
├─include
├─lib
└─wrapper
bin
和lib
目录:存放 NIM SDK 的动态库文件,在您发布时请打包使用到的模块,lib
后缀为 Windows 下的动态库符号链接文件。(lib)nim(.dll|.so|.dylib)
:即时通讯,含圈组。(lib)nim_chatroom(.dll|.so|.dylib)
:聊天室。(lib)h_available(.dll|.so|.dylib)
:高可用模块,被以上两个模块所依赖。(lib)nim_tools_http(.dll|.so|.dylib)
:http 工具库,若不使用wrapper/nim_tools_cpp_wrapper/nim_tools_http_cpp.h
中的接口可去除。nim_audio.dll
:音频解码库,仅支持 Windows 环境,若不使用wrapper/nim_tools_cpp_wrapper/nim_audio_cpp.h
中的接口可去除。nrtc.dll
:音视频通话库,仅支持 Windows 环境,若不使用wrapper/nim_cpp_wrapper/api/nim_cpp_vchat.h
中的接口可去除。node-nim.node
:NIM SDK Node 封装层,用于 Electron 以及 Node.js 环境下的接入,其他情况可去除。- 其他如
msvcp120.dll
、msvcr120.dll
等(系统)依赖。
include
目录:存放 NIM C SDK 的导出头文件。wrapper
目录:存放 C++ 封装层的源代码。
方式一:使用 V10 系列接口
如果您仅使用 V10 接口,只需将 include
目录添加到头文件搜索路径,代码中包含对应头文件即可使用,无需进行以下步骤。
方式二:基于 CMake 接入
如果您的原工程是基于 CMake 进行管理,可通过以下步骤完成接入。
-
使用
add_subdirectory
命令将wrapper
目录添加为子目录。 -
使用
include_directories
方法将include
和wrapper
文件夹添加为头文件搜索路径。 -
根据您的执行目标使用
target_link_libraries
按需添加链接库即可。库名称分别如下:-
nim_cpp_wrapper
:NIM C++ 封装层库。 -
nim_chatroom_cpp_wrapper
:Chatroom C++ 封装层库。 -
nim_wrapper_util
:NIM 及 Chatroom C++ 封装层库通用的工具库。 -
nim_tools_cpp_wrapper
:HTTP 组件 C++ 封装层库。 -
nim_qchat_cpp_wrapper
:QChat 圈组 C++ 封装层库。示例代码如下:
CMake
# CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(nim_demo) include_directories(${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_LIST_DIR}/wrapper) add_subdirectory(wrapper) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} nim_cpp_wrapper nim_chatroom_cpp_wrapper nim_wrapper_util nim_tools_cpp_wrapper nim_qchat_cpp_wrapper)
-
方式三:传统方式接入
传统方式接入是指将 include
和 wrapper
目录添加到头文件搜索路径中,然后通过 集成静态库 或者 集成源码 的方式接入。
在界面上选择 项目 > 属性 > C/C++ > 常规 > 附加包含目录。
在左侧导航栏选择 导航栏 > 项目 > Build Settings > 搜索 Header Search Paths。
Qt# .pro 文件
INCLUDEPATH += include wrapper
方式一:集成静态库
-
编译
wrapper
目录下的源文件生成静态库,产物会输出到exports
目录下。WindowsBash
> md build > cmake -S wrapper -B build -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=exports > cmake --build build --config Release --target install
macOSBash
> mkdir build > cmake -S wrapper -B build -G "Xcode" -DCMAKE_INSTALL_PREFIX=exports > cmake --build build --config Release --target install
LinuxBash
> mkdir build > cmake -S wrapper -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=exports > cmake --build build --config Release --target install
- 在
cmake configure
中添加-DCMAKE_CXX_FLAGS_DEBUG=/MTd
或-DCMAKE_CXX_FLAGS_RELEASE=/MT
生成 MTd/MT 工程。 - 在
cmake configure
中添加-DBUILD_SHARED_LIBS=ON
来生成动态库工程。 - 在
cmake configure
中修改 -G 参数来指定您期望的 generator。 - 修改命令中的
Release
为 Debug 来生成 Debug 版本的库。
- 在
-
将生成的静态库添加到您项目的链接库中。
Visual Studio- 右键 项目 > 链接器 > 常规,右侧的 附加库目录 中添加 exports 为库文件搜索路径。
- 右键 项目 > 属性 > 链接器 > 输入 > 附加依赖项 添加用到的静态库名,如
nim_cpp_wrapper.lib
,nim_chatroom_cpp_wrapper.lib
,nim_wrapper_util.lib
,nim_tools_cpp_wrapper.lib
,nim_qchat_cpp_wrapper.lib
。
Xcode- 左侧 导航栏 > 项目 > Build Settings > 搜索 Library Search Paths。
- 左侧 导航栏 > 项目 > Build Phases > Link Binary With Libraries 添加用到的静态库名,如
libnim_cpp_wrapper.a
。
Qt CreatorQt
# .pro 文件 LIBS += -Lexports -lnim_cpp_wrapper -lnim_chatroom_cpp_wrapper -lnim_wrapper_util -lnim_tools_cpp_wrapper -lnim_qchat_cpp_wrapper
方式二:集成源码
将 wrapper
目录下的源文件添加到您的项目中进行编译。
- 打开现有的 VS 解决方案。
- 在解决方案资源管理器中右键单击 解决方案 > 添加 > 新建项目 > 静态库。
- 选择项目类型为静态库。
- 创建新项目后,在解决方案资源管理器中右键单击该 项目 > 添加 > 现有项。
- 将
wrapper
目录下所有源文件添加到项目中。
- 打开现有的 Xcode 项目。
- 在项目导航栏中右键单击 项目 > 添加文件 到 项目名。
- 选择
wrapper
目录将其添加到项目中。
- 在 Qt Creator 中打开现有项目。
- 在项目视图中右键单击 项目 > 添加新建项 > 新建项目。
- 选择项目类型为静态库。
- 创建新项目后,在项目视图中右键单击该 项目 > 添加现有文件。
- 将
wrapper
目录下所有源文件添加到项目中。
下一步
完成 SDK 接入后,您就可以使用 C++ 封装层的接口进行开发,如下所示:
C++#include "nim_cpp_wrapper/nim_cpp_api.h"
int main()
{
nim::SDKConfig config;
// 初始化一个即时通讯客户端,appKey 为您在网易云信控制台上创建应用时获取的应用密钥(AppKey)。
auto ret = nim::Client::Init("appKey", "appDataDir", "", config);
if(ret != nim::kNIMResSuccess){
return -1;
}
return 0;
}
更多详情,请参考 初始化。
添加依赖
运行 SDK 时,您可以按需添加 NIM 动态库依赖和系统依赖。
添加 NIM 动态库依赖
- Windows 项目:将
bin
目录中用到的动态库文件拷贝到可执行文件所在目录。 - macOS 项目:将
lib
目录中用到的动态库文件拷贝到可执行文件的runpath
目录中,对于 app bundle 来说一般为Contents/Frameworks
目录,即将runpath
设置为@executable_path/../Frameworks
。 - Linux 项目:将
lib
目录中用到的动态库文件拷贝到可执行文件的rpath
目录中,设置rpath
为$ORIGIN
表示可执行文件所在目录。
添加系统依赖
- Windows 项目:在 Windows 下,NIM SDK 使用 Visual Studio 2017 及其工具链进行编译。部署应用前,您需要将 Visual Studio 2017 运行时库安装到目标系统中,或将依赖文件存放到执行程序可以搜索到的路径下。下载 Visual Studio 2017 运行时库,请访问 微软官网下载 vc_redist.x86.exe/vc_redist.x64.exe。
- macOS 项目:最低系统版本要求 macOS 10.13。
- Linux 项目:最低 glibc 版本要求 2.23。