Skip to content

环境搭建

环境要求

  • IDE: Visual Studio 2022(或更高版本)
  • .NET 版本: .NET 8.0(目标框架)
  • 架构: x64(SDK 仅支持 64 位)
  • 配置: Release / Debug(需与 SDK 版本匹配)
  • SDK 包:下载页获取 C# SDK

1. 创建项目

打开 Visual Studio 2022,选择 Windows 窗体应用 (.NET 8.0),命名为 csharp_demo

在 Visual Studio 创建新项目向导中选择 Windows 窗体应用项目模板

2. 导入 SDK

将 SDK 文件夹拷贝到项目目录:

Windows 资源管理器中显示项目目录下的 Csharp_api SDK 文件夹与项目文件

text
项目根目录/
├── Csharp_api/
│   ├── Csharp_api.dll          # 托管接口(添加引用)
│   ├── nrc_host.dll            # 原生库(自动复制)
│   └── ...                     # 其他依赖
├── csharp_demo.csproj
├── Form1.cs
└── ...

2.1 添加托管引用

  1. 解决方案资源管理器中右键项目 → 添加 → 项目引用
  2. 点击浏览,选中 Csharp_api/Csharp_api.dll
  3. 点击确定

2.2 设置原生库自动复制

Csharp_api 文件夹中找到 nrc_host.dll

  1. 右键 nrc_host.dll属性
  2. 复制到输出目录 设置为 如果较新则复制

这样每次编译时,nrc_host.dll 会自动复制到 bin/Release/net8.0-Windows 目录,无需手动操作。

将 nrc_host.dll 动态库文件放到项目的输出目录下

2.3 显示所有文件(可选)

如果 SDK 文件夹在解决方案管理器中不可见:项目 → 显示所有文件 → 右键 Csharp_api包括在项目中

在 Visual Studio 项目菜单中点击显示所有文件选项以显示拷贝进来的 SDK 文件夹

3. 编写最小连接代码

Form1.cs 中添加连接测试代码:

csharp
using System;
using System.Windows.Forms;
using Csharp_api;   // SDK 命名空间

namespace csharp_demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string ip = "192.168.1.15";
            string port = "6001";
            int fd = NrcApi.connect_robot(ip, port);
            if (fd <= 0)
            {
                MessageBox.Show("连接失败,请检查 IP 和端口", "提示");
                return;
            }
            MessageBox.Show("连接成功!SocketFd: " + fd, "提示");
        }
    }
}

4. 编译运行

  1. 在工具栏中将配置切换为 Release,平台选择 x64
  2. 点击启动(或按 F5)
  3. 如果弹出对话框显示"连接成功",表示 SDK 配置正确

在 Visual Studio 工具栏将解决方案配置切换为 Release 并通过本地 Windows 调试器运行程序

排错

错误原因解决
DllNotFoundExceptionnrc_host.dll 不在输出目录检查 DLL 的"复制到输出目录"是否设为"如果较新则复制"
BadImageFormatException架构不匹配(x86 vs x64)确认项目平台目标为 x64
TypeInitializationException托管接口与原生库版本不一致确认 Csharp_api.dllnrc_host.dll 来自同一 SDK 包
连接返回 <= 0IP/端口错误或控制器未就绪检查 IP 和端口;用 ping 确认网络连通性