集成方式(当前版本)
更新时间: 2024/01/17 05:58:36
SDK 目录结构及主要文件介绍
为降低接入成本,NetEase IM SDK (以下简称 NIM SDK)从 8.4.0 版本起对发布目录进行了调整,C++ 封装层使用 CMake 进行管理,根据不同的情况您在接入 C++ 封装层时可能需要适当的修改,新的发布目录拆分为如下结构:
├─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++ 封装层的源代码
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++ 封装层库
示例代码如下:
# 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)
接入后,您就可以使用 C++ 封装层的接口进行开发:
#include "nim_cpp_wrapper/nim_cpp_api.h"
int main()
{
nim::SDKConfig config;
auto ret = nim::Client::Init("appKey", "appDataDir", "", config);
if(ret != nim::kNIMResSuccess){
return -1;
}
return 0;
}
传统方式接入
将 include
和 wrapper
目录添加到头文件搜索路径中,然后通过集成静态库或者集成源码的方式接入。
-
Visual Studio
右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录
-
Xcode
左侧导航栏 -> 项目 -> Build Settings -> 搜索 Header Search Pathss
-
Qt Creator
# .pro 文件 INCLUDEPATH += include wrapper
集成静态库
-
编译
wrapper
目录下的源文件生成静态库,产物会输出到exports
目录下。Windows> md build > cmake -S wrapper -B build -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=exports > cmake --build build --config Release --target install
macOS> mkdir build > cmake -S wrapper -B build -G "Xcode" -DCMAKE_INSTALL_PREFIX=exports > cmake --build build --config Release --target install
Linux> 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 Creator
# .pro 文件 LIBS += -Lexports -lnim_cpp_wrapper -lnim_chatroom_cpp_wrapper -lnim_wrapper_util -lnim_tools_cpp_wrapper -lnim_qchat_cpp_wrapper
- Visual Studio
集成源码
将 wrapper
目录下的源文件添加到您的项目中进行编译。
- 打开现有的 VS 解决方案。
- 在解决方案资源管理器中右键单击解决方案 -> 添加 -> 新建项目 -> 静态库。
- 选择项目类型为静态库。
- 创建新项目后,在解决方案资源管理器中右键单击该项目 -> 添加 -> 现有项。
- 将
wrapper
目录下所有源文件添加到项目中。
- 打开现有的 Xcode 项目。
- 在项目导航栏中右键单击项目 -> 添加文件到 "项目名"。
- 选择
wrapper
目录将其添加到项目中。
- 在 Qt Creator 中打开现有项目。
- 在项目视图中右键单击项目 -> 添加新建项 -> 新建项目。
- 选择项目类型为静态库。
- 创建新项目后,在“项目”视图中右键单击该项目 -> 添加现有文件。
- 将
wrapper
目录下所有源文件添加到项目中。
接入后,您可以使用 C++ 封装层的接口进行开发:
#include "nim_cpp_wrapper/nim_cpp_api.h"
int main()
{
nim::SDKConfig config;
auto ret = nim::Client::Init("appKey", "appDataDir", "", config);
if(ret != nim::kNIMResSuccess){
return -1;
}
return 0;
}
添加依赖
运行时需要添加 NIM 动态库依赖和系统依赖。
NIM 动态库依赖
-
Windows
将
bin
目录中用到的动态库文件拷贝到可执行文件所在目录 -
macOS
将
lib
目录中用到的动态库文件拷贝到可执行文件的runpath
目录中,对于 app bundle 来说一般为Contents/Frameworks
目录,即将runpath
设置为@executable_path/../Frameworks
-
Linux
将
lib
目录中用到的动态库文件拷贝到可执行文件的rpath
目录中,设置rpath
为$ORIGIN
表示可执行文件所在目录
系统依赖
-
Windows
在 Windows 下 云信 IM SDK 使用 VS2017 及其工具链进行编译,在您的应用部署前需要将 VS2017 运行时库安装到目标系统中或将依赖文件存放到执行程序可以搜索到的路径下。最新的 Visual Studio 2017 运行时库可以从微软官网下载(vc_redist.x86.exe / vc_redist.x64.exe)。
-
macOS
最低系统版本要求 macOS 10.13
-
Linux
最低 glibc 版本要求 2.23