SDK 目录结构及主要文件介绍
├─bin
├─doxygen
├─include
├─lib
├─syslib
└─wrapper
bin/lib 目录存放 NIM SDK 的动态库文件, 在您发布时请打包使用到的模块, .lib后缀为 Windows 下的动态库符号链接文件
- (lib)nim(.dll|.so|.dylib): 即时通讯, 含圈组
- (lib)nim_chatroom(.dll|.so|.dylib): 聊天室
- (lib)h_available(.dll|.so|.dylib): IM 基础库, 被以上两个模块所依赖
- node-nim.node: NIM SDK Node 封装层, 用于 Electron 以及 Node.js 环境下的接入, 其他情况可去除
- 其他如 msvcp120.dll、msvcr120.dll 等(系统)依赖
doxygen 用于生成文档的 doxygen 配置文件,您可以在该目录下通过 doxygen 生成本地文档
include 目录存放了 NIM SDK 的导出头文件
syslib 目录存放了 NIM SDK 的系统依赖库,仅在 Linux 下使用
wrapper 如果您只对接 V2 接口可忽略该目录
CMake 接入
如果您的原工程是基于 CMake 进行管理,可参考以下示例代码添加 NIM SDK 的依赖
示例:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(nim_demo)
add_executable(${PROJECT_NAME} main.cpp)
# 添加 include 目录到头文件搜索路径
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_LIST_DIR}/include
)
# 添加 lib 目录到链接库搜索路径
target_link_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_LIST_DIR}/lib
)
现在您可以使用 C++ 封装层的接口进行开发了
int main()
{
initOption.
appkey =
"your appkey";
V2NIMClient::get().init(initOption);
V2NIMClient::get().uninit();
}
Definition: v2_nim_ai_service.hpp:4
Definition: v2_nim_def_struct.hpp:163
nstd::string appkey
app key
Definition: v2_nim_def_struct.hpp:165
传统方式接入
将 include 目录添加到头文件搜索路径中
- Visual Studio
右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录
- Xcode
左侧导航栏 -> 项目 -> Build Settings -> 搜索 Header Search Pathss
- Qt Creator
# .pro 文件
INCLUDEPATH += include
SDK 通过统一的动态加载接口调用 SDK,您无需刻意的链接 SDK 到可执行程序中,只需将 SDK 的动态库文件放到可执行程序所在目录或确保可执行程序的 RPATH 可以搜索到 SDK 文件即可
运行时依赖
NIM 动态库依赖
- Windows
将 bin 目录中用到的动态库文件拷贝到可执行文件所在目录
- macOS
将 lib 目录中用到的动态库文件拷贝到可执行文件的 runpath 目录中,对于 app bundle 来说一般为 Contents/Frameworks 目录,即将 runpath 设置为 @executable_path/../Frameworks
- Linux
将 lib 目录中用到的动态库文件拷贝到可执行文件的 rpath 目录中,设置 rpath 为 $ORIGIN 表示可执行文件所在目录
系统依赖
- Windows
在 Windows 下 SDK 使用 VS2017 及其工具链进行编译,在您的应用部署前需要将 VS2017 运行时库安装到目标系统中或将依赖文件存放到执行程序可以搜索到的路径下。最新的 Visual Studio 2017 运行时库可以从微软官方网站下载
- macOS
最低系统版本要求 macOS 10.13
- Linux
最低 glibc 版本要求 2.23