Skip to content

初始化项目

Windows

本页内容介绍 MinGW 以及 MSVC 导入库,初始化项目的流程

1. MinGW+Qt

  • MinGW
  • MSVC

首先,在相关下载中找到上位机 SDK 下载栏,选择最新版本的 API 下载。

在Cpp文件夹下有 include 头文件夹,windows 文件夹下 win_mingw64_v2.x.x 存放着最新版本的动态库。

1.1 创建项目

创建一个 Qt Widgets Application 应用,命名为 qt_demo

1.2 导入SDK

创建好项目后,在项目下新建 libs 文件夹,将 SDK 拷贝到项目文件夹中

假设你的目录结构如下:

text
项目根目录/
├── libs/
│   ├── include/
│   │   └── c_interface
│   │   └── cpp_interface
│   │   └── parameter
│   ├── libnrc_host.dll.a
│   └── nrc_host.dll
└── main.cpp
└── mainwindow.cpp
└── mainwindow.h
└── mainwindow.ui
└── qt_demo.pro

在项目中的 qt_demo.pro 文件的最后添加上SDK的头文件以及库引用

makefile
# 1. 指定头文件路径
INCLUDEPATH += $$PWD/libs/include
# 2. 指定库文件搜索路径
LIBS += -L$$PWD/libs
# 3. 链接库文件(注意名称格式)
LIBS += -lnrc_host
# 4. 确保运行时能找到 .dll(可选,见下方说明)
win32 {
    # 将 .dll 复制到构建输出目录(如 debug/release)
    DLL_SOURCE = $$shell_path($${PWD}\libs\nrc_host.dll)
    DLL_TARGET = $$shell_path($${OUT_PWD}\\)
    QMAKE_POST_LINK += $$quote(cmd /c copy /Y $$quote($$DLL_SOURCE) $$quote($$DLL_TARGET))
}

1.3 调用头文件

在 mainwindows.cpp 中添加头文件 #include "cpp_interface/nrc_api.h"

cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
// 添加库的头文件
#include "cpp_interface/nrc_api.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}


MainWindow::~MainWindow()
{
    delete ui;
}

1.4 运行

点击运行,如果没有报错,代表成功的引入了头文件。

更多示例可以浏览C++接口说明 | 纳博特科技

2. MSVC

  • 使用的 IDE 为: Qt Creator 5.0.2
  • 编译套件为:Qt 5.12.12 MinGW 64-bit

在Cpp文件夹下有 include 头文件夹,windows 文件夹下 win_msvc2017_x64_v2.x.x 存放着最新版本的动态库。

2.1 创建项目

选择 c++ “控制台应用”创建。

2.2 导入SDK

创建好项目后,将 SDK 拷贝到新创建的项目文件夹中。

假设你的目录结构如下:

text
项目根目录/
├── libs/
│   ├── include/
│   │   └── c_interface
│   │   └── cpp_interface
│   │   └── parameter
│   ├── nrc_host.lib
│   └── nrc_host.dll
└── cpp_demo.cpp
└── cpp_demo.aps
└── cpp_demo.rc
└── cpp_demo.vcxproj
└── resource.h

在 Visual Studio 中右键项目 → ​属性 (Properties)​ → 配置以下选项:

​(1) 添加头文件路径

  • 使用的 IDE 为: Visual Studio 2022
  • 编译生成工具为:MSVC Release x64
text
$(ProjectDir)libs\include

​(2) 添加库路径

  • ​Configuration Properties → C/C++ → 常规(General)→ 附加包含目录(Additional Include Directories)​ ​添加头文件路径:
text
$(ProjectDir)libs

​(3) 链接库文件

  • ​Configuration Properties → 链接器(Linker) → 常规(General)→ 附加库目录(Additional Library Directories)​​ ​添加 .lib 文件所在路径:
text
nrc_host.lib

(4) 确保运行时能找到 .dll

  • ​Configuration Properties → 链接器(Linker) → 输入(Input) → 附加依赖项(Additional Dependencies)​​ ​添加 .lib 文件名:
text
copy "$(ProjectDir)libs\nrc_host.dll" "$(OutDir)"

2.3 引入头文件

在cpp_demo.cpp中添加头文件

cpp
#include <iostream>
#include <thread>
#include <chrono>
#include <string>
#include "cpp_interface/nrc_interface.h"  // 导入头文件


int main()
{
    SOCKETFD fd = connect_robot("192.168.1.15", "6001");
    if (fd <= 0)
    {
        std::cout << "连接失败" << std::endl;
        return 0;
    }
    std::cout << "连接成功: " << fd << std::endl;
}

点击本地 Windows 调试器,如果使用的 Debug 版本的库,需要将 Release 切换为 Debug。

如果没有报错,表示我们成功的引入了 SDK。

更多示例可以浏览C++接口说明 | 纳博特科技

Linux

新建 include、lib、src 三个文件夹,然后将 api/ 文件夹放入 include 中。将 libnrc_host 放入 lib 中,在 src 文件夹下新建一个 main.cpp 文件。

1、新建 Makefile 文件

将下面内容拷贝到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 $(TARGET) $(objects)

2、在 src 下新建 main.cpp 文件

cpp
#include <iostream>
#include "cpp_interface/nrc_api.h"


int main() {
  std::cout << "connect state: " << std::endl;
  SOCKETFD fd = connect_robot("192.168.1.15","6001");
  std::cout << "connect state: " << get_connection_status(fd) << std::endl;
}

3、编译生成可执行程序

打开终端,使用 make 将编译出可执行程序 demo

更多示例可以浏览接口示例 | 纳博特科技

  • ​​Configuration Properties → 生成事件(Build Events)→ 生成后事件(Post-Build Event)​ ​添加 .lib 文件名: