NIM PC Cross Platform SDK
|
在 Windows 下 SDK 使用 VS2017 及其工具链(v141_xp、/MD)进行编译,在您的应用部署前需要将 VS2017 运行时库安装到目标系统中或将依赖文件存放到执行程序可以搜索到的路径下。最新的 Visual Studio 2017 运行时库可以从微软官方网站进行下载:https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0
在 macOS 下 SDK 使用 Xcode 及其工具链进行编译,无特殊支持要求,最低支持系统到 macOS 10.13。
为降低接入成本, NetEase IM SDK (以下简称 NIM SDK)从 8.4.0 版本起对发布目录进行了调整, C++ 封装层使用 CMake 进行管理, 根据不同的情况您在接入 C++ 封装层时可能需要适当的修改, 新的发布目录拆分为如下结构:
bin
/lib
目录存放 NIM C SDK 的动态库文件, 在您发布时请打包使用到的模块, .lib
后缀为 Windows 下的动态库符号链接文件wrapper/nim_tools_cpp_wrapper/nim_tools_http_cpp.h
中的接口可去除.wrapper/nim_tools_cpp_wrapper/nim_audio_cpp.h
中的接口可去除.wrapper/nim_cpp_wrapper/api/nim_cpp_vchat.h
中的接口可去除.include
目录存放了 NIM C SDK 的导出头文件wrapper
目录存放了 C++ 封装层的源代码(含头文件)如果您希望以纯 C 接口接入 NIM SDK, 可以直接添加 include 为头文件搜索路径, ,动态加载或静态链接所需的动态库即可
如果您原工程是基于 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
NIM HTTP 组件 C++ 封装层库nim_qchat_cpp_wrapper
NIM QChat 圈组 C++ 封装层库使用传统方式接入 C++ 封装层, 您需要先生成 C++ 封装层的二进制文件.根据您工程的运行时库和平台工具集来生成您需要的封装层二进制文件, 以下列举了不同情况下生成 C++ 封装层所需的配置, 您只需要选择其中一种符合您工程配置的选项来生成工程文件即可.
使用 CMake GUI 工具生成
首先使用 CMake GUI 工具打开打开 C++ 封装层文件夹并配置生成缓存目录
在点击 Configure 按钮后会提示您来配置工程选项, 参考下图配置您的工程:
点击 Finish 按钮后工程初始化完成, 您可以在界面配置生成工程文件的选项, 参考下图配置:
您可以通过配置 BUILD_SHARED_LIBS
选择生成动态库还是静态库, 默认情况下将生成静态库, CMAKE_INSTALL_PREFIX
选项决定了 C++ 头文件和库文件的导出目录, 指定为 SDK 的根目录即可.
点击 Generate 按钮来生成工程文件, 生成后点击 Open Project 按钮即可打开工程, 在打开的工程中右键点击 INSTALL 生成项目.
生成完成后, C++ 封装层的头文件及库文件会自动拷贝到 SDK 根目录下的 include 及 lib 目录下.
当工程编译完成后, 只需要在您自己的工程中, 将 include
目录添加为头文件搜索路径, 将 lib
目录添加到您工程的库文件搜索路径, 并链接指定库文件即可.以 Visual Studio 举例, 分别对应:
注意:对于 8.4.0 以前的版本升级到 8.4.0 的情况, 您需要将原来头文件包含路径从原来的
nim_sdk
修改为include
目录.
使用命令行工具生成
通常情况下我们需要在 CI 集成阶段自动化编译步骤, 您可以通过命令行来生成 C++ 封装层代码:
我们不建议将 CMake 产生的工程文件直接引用到项目中使用, 因为 CMake 使用将绝对路径写入到工程的配置文件(<tt>.vcxproj)中, 您在自己开发机上生成的工程文件无法在其他电脑顺利编译.
所以建议您在 CI 集成或者与其他同事协作时, 通过自定义脚本在项目编译前始终执行 CMake 来生成并编译工程得到需要的二进制文件产物.
当然您同样可以将生成好的 .dll
和 .lib
上传到您的代码版本控制系统, 这样虽然方便但在每次更新 SDK 版本时都上传二进制文件到代码版本控制系统中会导致代码仓库体积不断增大.
如果您的工程项目已经是基于 CMake 管理, 则不存在这样的问题, 只需将 wrapper 工程作为您主项目的依赖即可, 其他无需任何多余配置.