三、Linux + GCC
3.1 目录结构

text
项目目录/
├── include/
│ ├── c_interface/ # C 接口头文件
│ ├── cpp_interface/ # C++ 接口主入口
│ └── parameter/ # 参数结构体头文件
├── lib/
│ └── libnrc_host.so # Linux 动态库
├── src/
│ └── main.cpp
└── Makefile3.2 Makefile
makefile
TARGET=demo
all:
g++ -o $(TARGET) src/*.cpp -I./include -L./lib -lnrc_host -lpthread -lm -ldl -lrt -lstdc++ -std=c++11 -fPIC
clean:
rm -f $(TARGET)3.3 运行时动态库路径
编译成功后运行前,需要让系统能找到 libnrc_host.so:
bash
# 方式一:设置 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
./demo
# 方式二:将库复制到系统目录
sudo cp lib/libnrc_host.so /usr/local/lib/
sudo ldconfig
./demo3.4 头文件路径与最小连接代码
3.4.1 头文件包含路径
SDK 头文件之间存在两层 #include 关系,集成到自有工程时若目录结构与 3.1 节不同,需要同步调整这些路径,否则编译会报 No such file or directory。
第一层:nrc_api.h 包含同目录下的其他接口头文件
nrc_api.h 与下列头文件同位于 include/cpp_interface/ 目录,直接用文件名引用即可:
cpp
// include/cpp_interface/nrc_api.h
#include "nrc_craft_conveyor_belt_track.h"
#include "nrc_craft_vision.h"
#include "nrc_craft_weld.h"
#include "nrc_interface.h"
#include "nrc_io.h"
#include "nrc_job_operate.h"
#include "nrc_modbus.h"
#include "nrc_queue_operate.h"
#include "nrc_track.h"
#include "nrc_dual_arm.h"第二层:被包含的头文件再引用 parameter/ 目录下的参数头文件
由于 cpp_interface/ 与 parameter/ 是 include/ 下的平级目录,被包含的头文件使用 ../parameter/ 相对路径引用参数定义。以 nrc_craft_conveyor_belt_track.h 为例:
cpp
// include/cpp_interface/nrc_craft_conveyor_belt_track.h
#include "../parameter/nrc_define.h"
#include "../parameter/nrc_craft_conveyor_belt_track_parameter.h"若你的工程把
parameter/放到了其他位置(如cpp_interface/内部,或重命名了目录),需要同步修改这些#include路径。
3.4.2 最小连接代码
cpp
#include <iostream>
#include <unistd.h>
#include "../include/cpp_interface/nrc_api.h"
int main() {
std::cout << "正在连接控制器..." << std::endl;
SOCKETFD fd = connect_robot("192.168.1.15", "6001");
if (fd <= 0) {
std::cout << "连接失败" << std::endl;
return 1;
}
// 等待连接就绪
while (get_connection_status(fd) != 0) {
usleep(200000);
}
std::cout << "连接成功: " << fd << std::endl;
std::cout << "SDK 版本: " << get_library_version() << std::endl;
std::cout << "连接状态: " << get_connection_status(fd) << std::endl;
// 断开连接
disconnect_robot(fd);
return 0;
}3.5 编译运行
bash
make
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
./demo输出 连接成功: 1 即表示配置正确。
下一步
完成连接测试后,请浏览接口示例了解更多 API 用法。