一、简介
C# SDK仓存放于 C# SDK-GITEE 网址下
仓库主要目录包含:
src:C# 封装库(基于P/Invoke与SafeHandle)example:C# 示例程序
C# 调用链:
C# -> C 封装层 (libelite_cs_series_sdk_c) -> C++ SDK二、运行示例
通用格式:
dotnet run --project example -- <mode> <args...>当前支持模式(见
Program.cs):primary_clientdashboard_clientdriverspeedltrajectoryservoj_planrtsi_clientserialconnect_robot_test
比如在控制台下进入C# SDK所在目录,执行下行命令
# Dashboard
dotnet run --project example -- dashboard_client 172.16.102.156此外,在VS STUDIO上,也可以直接运行对应的项。如下图所示,打开对应项目的cs文件,修改其中的IP为机器人的真实ip后

点击上方选项栏里的运行按钮

运行结果如下图所示:

三、外部C#项目
3.1 通过 NuGet 包引用
此步骤需要先按构建指南生成 NuGet 包。
执行
dotnet pack 时,NuGet 包会把当前 .native-out/ 下已经准备好的 native 运行库一并打进去。 外部项目通过包引用后,构建阶段只会把包内的 native 库复制到输出目录,不会再次编译 C 库。进入项目目录:
cd myproject/从本地添加对应功能包:
dotnet add package elite_cs_sdk --version 0.1.1 --source /xxxxx/nupkg--source 后面的参数为 Elite_Robots_CS_SDK_CSharp 项目生成的本地 nupkg 目录。 如果需要分发多个平台,请先准备好对应平台的 native 输出,再执行 dotnet pack。代码示例:
using EliteRobots.CSharp; // 所有接口统一命名空间
var ip = args.Length > 0 ? args[0] : "172.16.102.156"; // 机器人默认 IP,需修改成自己的机器人 IP
using var dash = new DashboardClientInterface();
if (!dash.connect(ip))
{
Console.WriteLine("connect failed");
return;
}
Console.WriteLine($"RobotMode: {dash.robotMode()}");
dash.disconnect();编译项目:
dotnet build运行示例:
dotnet run3.2 Windows 下使用 Visual Studio
此方式需要以下两个dll库文件
elite_cs_sdk.dll:C# 封装层elite_cs_series_sdk_c.dll:原生 C 封装层
推荐做法:
- 在 Visual Studio 中新建一个
.NET 8控制台项目。 - 右键项目,选择“添加引用”,浏览并添加本仓库构建输出目录中的
elite_cs_sdk.dll。 - 将
elite_cs_series_sdk_c.dll复制到你的目标项目输出目录,或配置为生成时自动复制到bin/Debug/net8.0/或bin/Release/net8.0/。 - 确保运行目录里最终同时存在你的程序、
elite_cs_sdk.dll和所需 native DLL。
一个简单的目录示例:
MyApp/bin/Debug/net8.0/
MyApp.exe
MyApp.dll
elite_cs_sdk.dll
elite_cs_series_sdk_c.dll代码示例可以参考example下使用案例(需修改配方和脚本读取路径)
如果运行时提示
DllNotFoundException: elite_cs_series_sdk_c,通常表示 native DLL 没有被复制到程序运行目录。另可选做法:
修改项目的csproj文件,添加下面的ItemGroup标签
<ItemGroup>
<Reference Include="elite_cs_sdk">
<HintPath>libs\elite_cs_sdk.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="libs\*.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>四、常见问题
4.1 DllNotFoundException: elite_cs_series_sdk_c
- 如果你是直接构建本仓库:
- 先重新执行
dotnet build,确认自动 bootstrap 处于启用状态 - 如果自动 bootstrap 失败,重点检查:
git、cmake、C/C++ 编译器是否已安装- 机器是否能访问 native 封装仓库
- native 封装在需要
ELITE_AUTO_FETCH_SDK=ON时,是否能继续访问上游 SDK 仓库 - 如果仓库地址是自动推导的,当前仓库的
origin是否确实对应正确的 owner 或 fork - 如果当前网络无法访问 GitHub,确认 Gitee 是否可访问
- 如果你是在其他项目里通过 NuGet 包引用:
- 确认打包前
.native-out/下已经准备好了对应平台的 native 运行库 - 如果你更新了包但仍在使用旧缓存,请升级包版本后重新添加引用
- 确认 native 库文件已经被复制到项目输出目录
4.2 串口示例报 SSH connection failed: Connection refused
startToolRs485依赖控制器 SSH。- 检查控制器 SSH 服务是否开启、22 端口是否可达、防火墙/路由是否阻断。
4.3 Windows 下出现 NMAKE fatal error U1052: 未找到文件 "Makefile"
- 这通常不是根因,而是前面的
cmake配置步骤已经失败,后续cmake --build又继续执行导致的二次报错。 - 重点检查:
- 是否安装了 Visual Studio 的 C++ 构建工具,或
Ninja cmake是否能找到可用的 C/C++ 编译器- native 封装仓库及其上游依赖仓库是否可访问
- 更新到包含最新 bootstrap 脚本的版本后,构建会直接显示真实的
cmake configure失败原因,而不是只显示NMAKE错误。
4.4 RtUtils FIFO 调度警告
- 这是实时调度优化提示,通常不是致命错误,可忽略。
4.5 Windows 下报 Could NOT find Boost
- 这通常表示上游 C++ SDK 的依赖没有通过
vcpkg或其他前缀路径传给cmake。 - 如果你已经通过
vcpkg安装了boost,请显式设置:VCPKG_ROOTCMAKE_TOOLCHAIN_FILE- 需要时再设置
VCPKG_TARGET_TRIPLET
- 如果不是
vcpkg安装的依赖,可以改为设置CMAKE_PREFIX_PATH。