7.6 在 Linux 下创建可执行文件

使用 HALCON 算子的 C++ 程序必须包含 HalconCpp.h 文件,该文件包含所有与用户相关的 HALCON 系统定义以及 C++ 接口所需的声明。为此,请在 C++ 文件顶部添加以下命令:

  #include "HalconCpp.h"

要在命令行中指定编译器的包含路径,请使用以下语法:

  -I$HALCONROOT/include -I$HALCONROOT/include/halconcpp

要创建应用程序,必须将两个库链接到程序中: libhalconcpp.so 库包含 HALCON/C++ 接口的各种组件。libhalcon.so 库是 HALCON 库。要为链接器指定库路径和库,请使用以下语法:

  -L$HALCONROOT/lib/$HALCONARCH -lhalconcpp -lhalcon -lpthread

在某些系统上,还必须链接 libdl.solibrt.so(分别使用附加选项 -ldl-lrt)。

HALCON XL 应用:  ! 
请注意,只有在需要 HALCON XL 功能时才使用

如果要使用 HALCON XL,请链接 libhalconcppxl.solibhalconxl.so 库。

要在 Linux 下链接和运行应用程序,请确保系统变量 LD_LIBRARY_PATH 包含 HALCON 库路径 $HALCONROOT/lib/$HALCONARCH

在 Linux 下编译和链接示例程序

下面的示例显示了一个名为 main.cpp 的非常基本的 C++ 程序,它读取图像并打印其宽度和高度:

  #include "HalconCpp.h"

  #include <iostream>

  int main(int argc, char **argv)
  {
    HalconCpp::HObject hobj;
    HalconCpp::HTuple width, height;
    HalconCpp::ReadImage(&hobj, "printer_chip/printer_chip_01");
    HalconCpp::GetImageSize(hobj, &width, &height);

    std::cout << "Image - width: " << width.I() << ", height: " << height.I() << '\n';
    return 0;
  }

要在 Linux 下编译和链接程序,请运行:

  g++ -o example main.cpp  -I$HALCONROOT/include -I$HALCONROOT/include/halconcpp  \
    -L$HALCONROOT/lib/$HALCONARCH -lhalconcpp -lhalcon -lpthread

在 Linux 下使用 CMake 构建 HALCON 示例

您可以在 $HALCONEXAMPLES/cpp 下面的目录中找到展示各种 HALCON 用例以及如何用 C++ 实现这些用例的示例。您可以使用提供的 CMakeLists.txt 文件用 CMake 构建这些示例。

要使用 CMake 生成示例程序,请执行以下操作:

  1. 如有需要,请从 CMake 网站 下载 CMake(3.7.1 或更高版本)并安装。
  2. 创建构建目录,然后运行 cmake 配置构建并创建应用程序:

      mkdir build
      cd build
      cmake $HALCONEXAMPLES/cpp/console
      cmake --build .
    

    要进行配置,CMake 需要知道 HALCON 安装的位置、示例文件的位置以及要使用的 HALCON 架构:

    有关如何使用 CMake 的一般信息,参见 CMake 文档

    HALCON XL 应用: 默认情况下,示例将使用标准版本的 HALCON 构建。如果要使用 HALCON XL 构建,请在 CMake 配置时将选项 HALCON_XL 设为 ON1

  3. 作为选项,您可以使用 -G 选项指定新构建树的生成器。
    有关 CMake 生成器的更多信息,参见 CMake 文档

您还可以在其他子目录(mfc/FGMultiThreadingmfc/Matchingmfc/MatchingExtWinmotif/Matchingqt/Matching)中找到相应的 CMakeLists.txt 文件。