IM 即时通讯
Windows/macOS
开发指南

集成方式(当前版本)

更新时间: 2024/01/17 13: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.dllmsvcr120.dll 等(系统)依赖
  • include 目录存放了 NIM C SDK 的导出头文件
  • wrapper 目录存放了 C++ 封装层的源代码

CMake 工程接入

如果您原工程是基于 CMake 进行管理,可通过以下步骤完成接入。

  1. 使用 add_subdirectory 命令将 wrapper 目录添加为子目录。

  2. 使用 include_directories 方法将 includewrapper 文件夹添加为头文件搜索路径。

  3. 根据您的执行目标使用 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;
}

传统方式接入

includewrapper 目录添加到头文件搜索路径中,然后通过集成静态库或者集成源码的方式接入。

  • Visual Studio

    右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录

  • Xcode

    左侧导航栏 -> 项目 -> Build Settings -> 搜索 Header Search Pathss

  • Qt Creator

    # .pro 文件
    INCLUDEPATH += include wrapper
    

集成静态库

  1. 编译 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 版本的库
  2. 将生成的静态库添加到您项目的链接库中。

    • 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
      

集成源码

wrapper 目录下的源文件添加到您的项目中进行编译。

Visual Studio
  1. 打开现有的 VS 解决方案。
  2. 在解决方案资源管理器中右键单击解决方案 -> 添加 -> 新建项目 -> 静态库
  3. 选择项目类型为静态库。
  4. 创建新项目后,在解决方案资源管理器中右键单击该项目 -> 添加 -> 现有项
  5. wrapper 目录下所有源文件添加到项目中。
Xcode
  1. 打开现有的 Xcode 项目。
  2. 在项目导航栏中右键单击项目 -> 添加文件到 "项目名"。
  3. 选择 wrapper 目录将其添加到项目中。
Qt Creator
  1. 在 Qt Creator 中打开现有项目。
  2. 在项目视图中右键单击项目 -> 添加新建项 -> 新建项目
  3. 选择项目类型为静态库。
  4. 创建新项目后,在“项目”视图中右键单击该项目 -> 添加现有文件
  5. 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

此文档是否对你有帮助?
有帮助
去反馈
  • SDK 目录结构及主要文件介绍
  • CMake 工程接入
  • 传统方式接入
  • 集成静态库
  • 集成源码
  • 添加依赖
  • NIM 动态库依赖
  • 系统依赖