Windows 端三种接入方式共用同一个包、同一套运行时依赖:C++ 直接调用原生接口;C 用 SMeeting_C.h
里的 SMeetingEngine_* 函数;C# 走包内的 SMeetingNet 封装,它把 SMeeting.h 的 C++ 接口
(ISMeetingEngine /
ISMeetingChannel / 媒体对象)暴露为
SMeetingNet 命名空间下惯用的 class / event / IDisposable,不需要自己写回调 vtable。
按语言选对应标签:
环境要求
SDK 提供 x86(Win32 / 32 位)与 x64(64 位)两个包,必须与你的工程目标平台一致。
用 x86 包链接 64 位工程(或反过来)会在链接期报
「模块计算机类型 x86 与目标计算机类型 x64 冲突」。
- 目标平台:Windows x86(Win32 / 32 位)或 x64(64 位)—— 按工程的目标平台选对应的包
- 语言:C++;C 接口改用
SMeeting_C.h 里的 SMeetingEngine_* 函数,头文件 / 导入库 / 部署方式与 C++ 完全相同,见 C 快速开始
- 运行时:SDK 包内已附带所需的 VC++ 运行库 DLL,无需在目标机器上单独安装运行库分发包
SMeetingNet.dll 是 C++/CLI 混合模式程序集,不是纯托管 DLL:它内部直接链接原生 SMeeting.dll,
位数必须与所用原生包一致。位数不匹配会在运行期抛 BadImageFormatException,而不是编译报错。
- 目标框架:.NET Framework 4.7.2 及以上(封装程序集以 4.7.2 为目标,可直接运行在 4.8 运行时上)
- 目标平台:与原生包一致 —— x86 程序用 x86 包的
meeting_dll/net/SMeetingNet.dll + meeting_dll/bin;
x64 程序用 x64 包的同名文件。工程请显式把平台设为 x86 / x64,不要用 Any CPU
- 语言:C#(其他 .NET 语言亦可)
- 运行时:包内已附带所需 VC++ 运行库 DLL,无需单独安装
下载 SDK
三种接入方式在同一个包里,下载地址一致:
新版本发布后按同样的命名规则取用,替换版本号即可。x64 包是在版本号前面多一段 -x64:
会议 SDK 包里已经包含底层音视频库(srtc.dll 等),不需要再单独下载 SRTC 的 Windows SDK。
目录结构
解压后得到(两个包的结构完全一样,内部根目录都是 meeting_dll/):
两个包解压后目录名相同,不要解压到同一个目录互相覆盖,也不要跨架构混用 lib / bin / net
(x86 的 SMeeting.lib / SMeeting.dll / SMeetingNet.dll 与 x64 的不是同一套二进制)。
包内的文件清单(数量和名称)会随版本调整,不要按文件名逐个挑选。
工程配置
添加头文件目录
把 meeting_dll/include 加入工程的附加包含目录,代码中引入:用 C 接口时再额外引入 SMeeting_C.h。 链接导入库
把 meeting_dll/lib 加入附加库目录,并链接 SMeeting.lib。
部署运行时依赖
把 meeting_dll/bin 目录下的全部内容拷贝到可执行文件所在目录:两个容易遗漏的点:
- DLL 的位数必须与
YourApp.exe 一致:32 位程序配 x86 包的 bin,64 位程序配 x64 包的 bin
plugin/ 必须保持为子目录,不能把里面的 DLL 平铺到根目录
1.0.0-alpha.6 起 bin 的文件清单有变化:不再包含 DenModule.dll、pthreadGC2.dll、
pthreadVC2.dll、rtp.dll、zlib.dll,新增 zlib1.dll。这些是底层音视频库的依赖调整。请用新包 bin 整包覆盖你的分发目录,不要按文件名增量拷贝,
以免残留已不再需要的旧 DLL。
bin 目录的内容会随版本调整,所以推荐整体拷贝而不是按文件名逐个挑选 —— 逐个挑选在升级
SDK 时很容易漏掉新增的依赖库。
引用 SMeetingNet.dll
在 C# 工程里添加对 meeting_dll\net\SMeetingNet.dll 的程序集引用:Private(复制本地)设为 true,生成的 exe 目录里就会带上 SMeetingNet.dll。把工程的「目标平台」显式设为 x86 或 x64,不要用 Any CPU —— SMeetingNet.dll 是混合模式
程序集,位数是固定的。
部署原生运行时依赖
把 meeting_dll/net/SMeetingNet.dll 以及 meeting_dll/bin 下的全部内容一起拷到可执行文件所在目录:net 与 bin 是两层目录,程序运行需要两者都在 exe 目录下。缺 bin 里的原生 DLL 会在
加载 / 入会时报错(DllNotFoundException 或加载失败)。
SMeetingNet.dll 只是薄封装,真正的实现仍在 SMeeting.dll 里;原生依赖的部署要点与 C++ 一致,
参见上方 C++ 标签的「部署运行时依赖」。
下一步