C++ 语言(Windows)

您正在查看最新版本(V3.0.0)的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持

本章介绍如何在 Windows 系统上使用 Mech-DLK SDK 的 C++ 例程。关于各类例程的功能说明,请参见 例程使用指南

安装包内容

Mech-DLK SDK 安装包中 C++ 例程相关文件说明如下:

目录 说明

cpp/bin

依赖的第三方库(.dll 文件和 hasp_rt.exe文件)及 C++ 示例可执行文件(可直接运行)

cpp/docs

C++ 接口文档

cpp/examples

C++ 示例程序

cpp/include

C++ 头文件

cpp/lib

C++ 库文件

cpp/Licenses

依赖库许可文件

cpp/resources

模型包和测试图像等例程运行所需文件

  • cpp/bin 目录中包含已生成的示例可执行文件。如需修改代码或重新编译例程,请参见各例程的编译及运行步骤。

  • 若运行或编译例程时使用的文件名或目录名包含中文,请在 Windows 系统设置中找到语言和区域相关选项,开启 Beta 版:使用 Unicode UTF-8 提供全球语言支持,然后重新启动计算机。

使用前提

使用 Mech-DLK SDK 中的 C++ 例程,需先安装以下软件:

安装 Mech-DLK SDK

请根据 安装指南 获取最新版本的 Mech-DLK SDK 并完成安装。

安装 CMake

  1. 下载 CMake 安装包:选择 Windows x64 Installer 对应的安装包。

  2. 安装时,建议勾选将 CMake 添加到环境变量的选项。

    cmake 1

编译 C++ 例程前,请确保已安装 CMake 3.10 及以上版本。

安装 Visual Studio

  1. 下载 Visual Studio 安装包

  2. 安装时,请勾选桌面应用和移动应用分类中的使用 C++ 的桌面开发工作负荷,再单击右下角的 安装

    sample c workload
  • 建议使用 Visual Studio 2019 及以上版本,编译和运行例程时建议使用 Releasex64 配置。

(可选)安装 OpenCV

如需编译和运行 OpenCV 例程,请下载并安装 OpenCV

本例程以 OpenCV 4.12.0 版本为例。如使用其他版本,请根据实际情况进行相应的配置调整。

(可选)安装 HALCON

如需编译和运行 HALCON 例程,请先安装 HALCON 软件,并完成相应的 License 配置。

例程调整说明

在编译和运行各类 C++ 例程前,可根据实际业务需求,对输入图像、模型包及相关资源文件进行调整。以下内容为常见调整项示例。

  • 输入图像:可替换待检测图像,或按实际需求修改图像读取路径。

  • 模型包:安装包默认提供缺陷分割模型包,可根据实际业务需求替换为所需模型包。

  • 结果输出:可按项目需要调整检测结果的输出方式,例如修改结果图的保存路径、文件名称或输出位置。

  • 资源文件:可在 cpp/resources 目录中新增或替换业务所需图像、模型包及相关资源文件。

编译及运行例程

完成相关调整后,可按以下步骤编译并运行例程。

Basic 例程

编译

  1. 打开 CMake,在源码路径中选择包含构建脚本的目录,即 cpp/examples 目录,在构建目录中选择或输入用于生成工程的目录,例如 cpp/build

    Where is the source code

    xxx\cpp\examples

    Where to build the binaries

    xxx\cpp\build

  2. 单击 Configure。首次配置时,如果构建目录不存在,请在弹出的对话框中单击 Yes 创建目录。

    create build cpp

    在配置页面中选择已安装的 Visual Studio 版本,并将平台设置为 x64,然后单击 Finish

    configuration

    配置成功后,日志最末行将显示 Configuring done

    cpp windows configuring done
  3. 在 CMake 配置项中,确认 SDK 路径配置正确:

    • DL_SDK_INCLUDE_PATH指向 cpp/include 目录(用于查找头文件)。

    • DL_SDK_LIB_PATH指向 cpp/lib 目录(用于链接库文件)。

      如路径配置不正确,可能导致编译失败。修改后请再次单击 Configure,确认无误后再继续后续步骤。

  4. 单击 Generate。生成成功后,日志最末行将显示 Generating done。然后单击 Open Project,使用 Visual Studio 打开解决方案。

    cpp windows generating done
  5. 在 Visual Studio 工具栏中,将解决方案配置设置为 Release,并将解决方案平台设置为 x64。之后,在 Visual Studio 菜单栏上选择 生成  生成解决方案

    generate solution
  6. 编译完成后,可在构建目录(即 cpp/build/Release)下看到生成的 example_basic.exe 文件。

运行

  1. cpp/bin 目录中的 hasp_rt.exe 文件和所有 .dll 文件拷贝至 example_basic.exe 所在目录。

  2. cpp/resources 目录中的 resources 文件夹拷贝至 example_basic.exe 同级目录。

    copy resources and dlls
  3. cpp/build/Release 目录下,双击生成的 example_basic.exe 文件运行例程;如需在 Visual Studio 中运行,请先将 example_basic 项目设为启动项目,再单击 本地 Windows 调试器 运行。

    run basic sample

cpp/resources 目录中包含例程运行所需的模型和资源文件,请确保其位于程序可正确访问的位置。

Advanced 例程(多线程推理)

编译

多线程推理例程的编译方式与 Basic 例程一致。完成 Basic 例程的编译步骤 后,可在 cpp/build/Release 目录下看到 example_advanced_multi_thread_infer.exe 文件。

运行

  1. cpp/bin 目录中的 hasp_rt.exe 文件和所有 .dll 文件拷贝至 example_advanced_multi_thread_infer.exe 所在目录。

  2. cpp/resources 目录中的 resources 文件夹拷贝至 example_advanced_multi_thread_infer.exe 同级目录。

  3. cpp/build/Release 目录下,双击生成的 example_advanced_multi_thread_infer.exe 文件运行例程;如需在 Visual Studio 中运行,请先将 example_advanced_multi_thread_infer 项目设为启动项目,再单击 本地 Windows 调试器 运行。

    run multi thread sample
多线程推理例程默认采用每个线程创建独立推理引擎的方式;若多线程共用同一个推理引擎,请确保多线程并发使用时的安全性。

Advanced 例程(OpenCV)

编译

  1. Basic 例程的编译步骤 完成首次配置。

  2. 在 CMake 配置页面中启用 USE_OPENCV,并填写 OpenCV_INCLUDE_DIROpenCV_LIB_DIR 路径。

    opencv cmake configuration
  3. 填写完成后,再次单击 Configure,确认无新增红色配置项后,单击 Generate

  4. 生成成功后,日志最末行将显示 Generating done。然后单击 Open Project,使用 Visual Studio 打开解决方案。

  5. 在 Visual Studio 工具栏中,将解决方案配置设置为 Release,并将解决方案平台设置为 x64。之后,在 Visual Studio 菜单栏上选择 生成  生成解决方案

  6. 编译完成后,可在 cpp/build/Release 目录下看到生成的 example_advanced_infer_with_opencv.exe 文件。

运行

  1. cpp/bin 目录中的 hasp_rt.exe 文件和所有 .dll 文件拷贝至 example_advanced_infer_with_opencv.exe 所在目录。

  2. cpp/resources 目录中的 resources 文件夹拷贝至 example_advanced_infer_with_opencv.exe 同级目录。

  3. 将 OpenCV 运行时相关依赖库拷贝至 example_advanced_infer_with_opencv.exe 同级目录。

  4. cpp/build/Release 目录下,双击生成的 example_advanced_infer_with_opencv.exe 文件运行例程;如需在 Visual Studio 中运行,请先将 example_advanced_infer_with_opencv 项目设为启动项目,再单击 本地 Windows 调试器 运行。

    run opencv sample

Advanced 例程(HALCON)

编译

  1. Basic 例程的编译步骤 完成首次配置。

  2. 在 CMake 配置页面中启用 USE_HALCON,并填写 HALCON_INCLUDE_DIRHALCON_LIB_DIR 路径。

    halcon cmake configuration
  3. 填写完成后,再次单击 Configure,确认无新增红色配置项后,单击 Generate

  4. 生成成功后,日志最末行将显示 Generating done。然后单击 Open Project,使用 Visual Studio 打开解决方案。

  5. 在 Visual Studio 工具栏中,将解决方案配置设置为 Release,并将解决方案平台设置为 x64。之后,在 Visual Studio 菜单栏上选择 生成  生成解决方案

  6. 编译完成后,可在 cpp/build/Release 目录下看到生成的 example_advanced_infer_with_halcon.exe 文件。

运行

  1. cpp/bin 目录中的 hasp_rt.exe 文件和所有 .dll 文件拷贝至 example_advanced_infer_with_halcon.exe 所在目录。

  2. cpp/resources 目录中的 resources 文件夹拷贝至 example_advanced_infer_with_halcon.exe 同级目录。

  3. cpp/build/Release 目录下,双击生成的 example_advanced_infer_with_halcon.exe 文件运行例程;如需在 Visual Studio 中运行,请先将 example_advanced_infer_with_halcon 项目设为启动项目,再单击 本地 Windows 调试器 运行。

    run halcon sample

常见问题

编译问题

找不到 OpenCV 或 HALCON 的头文件、库文件

  • 问题:编译 OpenCV 或 HALCON 例程时,提示找不到第三方库相关头文件或库文件。

  • 解决方案:确认在 CMake 配置阶段已正确启用 USE_OPENCVUSE_HALCON,并正确填写对应的头文件目录和库文件目录。

无法打开 SDK 头文件

  • 问题:编译时报错,提示无法打开 SDK 头文件。

  • 解决方案:在 CMake 配置项中检查并修正 DL_SDK_INCLUDE_PATHDL_SDK_LIB_PATH,确保分别指向 cpp/includecpp/lib,然后重新单击 Configure 并生成解决方案。

运行问题

缺少 .dll 报错

  • 问题:程序运行失败,提示缺少 .dll 文件。

  • 解决方案:确认 cpp/bin 目录中的 hasp_rt.exe 文件和所有 .dll 文件已拷贝至生成的可执行文件所在目录;如为 OpenCV 或 HALCON 例程,还需确保对应第三方库运行时依赖的.dll文件可被系统正常找到。

OpenCV 例程提示缺少相关.dll文件

  • 问题:运行 OpenCV 例程时,提示找不到 OpenCV 相关.dll文件。

  • 解决方案:将 OpenCV 运行时相关依赖库拷贝至 example_advanced_infer_with_opencv.exe 所在目录。

缺少资源或模型报错

  • 问题:程序运行时,提示资源或模型缺失。

  • 解决方案:确认 cpp/resources 目录中的 resources 文件夹已拷贝至生成的可执行文件同级目录,并确保其中包含运行例程所需的模型和资源文件。

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。