配置方案1:配置简单,但移植后的机器需要安装Halcon
注意:配置时建议使用环境变量来代替路径,并考虑平台移植问题
#includes
INCLUDEPATH += "$$(HALCONROOT)/include"
INCLUDEPATH += "$$(HALCONROOT)/include/cpp"
#libs
QMAKE_LIBDIR += "$$(HALCONROOT)/lib/$$(HALCONARCH)"
unix:LIBS += -lhalconcpp -lhalcon -ldl -lpthread
win32:LIBS += halconcpp.lib halcon.lib
官方推荐:
# MacOS specific settings. Note that while dyld will search under
# /Library/Frameworks by default, the preprocessor/compiler/linker will not
# and need to be told explicitly.
macx {
QMAKE_CXXFLAGS += -F/Library/Frameworks
QMAKE_LFLAGS += -F/Library/Frameworks
LIBS += -framework HALCONCpp
}
else {
#defines
win32:DEFINES += WIN32
#includes
INCLUDEPATH += "$$(HALCONROOT)/include"
INCLUDEPATH += "$$(HALCONROOT)/include/halconcpp"
#libs
QMAKE_LIBDIR += "$$(HALCONROOT)/lib/$$(HALCONARCH)"
unix:LIBS += -lhalconcpp -lhalcon -lXext -lX11 -ldl -lpthread
win32:LIBS += "$$(HALCONROOT)/lib/$$(HALCONARCH)/halconcpp.lib" \
"$$(HALCONROOT)/lib/$$(HALCONARCH)/halcon.lib"
}
官方Qt+Halcon例程位置:
C:\Users\Public\Documents\MVTec\HALCON-18.11-Steady\examples\cpp\qt\Matching
配置方案2:第三方库的使用,将用到的头文件和库直接打包到项目中,不用在客户机安装Halcon
- 项目目录下新建
include
和lib
文件夹 - 将
D:\Program Files\MVTec\HALCON-18.11-Steady\include
下所有内容复制到新建的include
下 - 将
D:\Program Files\MVTec\HALCON-18.11-Steady\lib\x64-win64
下的所有内容复制到新建的lib
下 - 在
D:\Program Files\MVTec\HALCON-18.11-Steady\bin\x64-win64
中找到与lib
文件下*.lib
文件重名的*.dll
文件,并复制到新建的lib
文件下
5. 将配置信息添加到*.pro
文件中
注意:要去掉
为debug版本添加'd'作为后缀
选项,否则编译时会找不到库文件
以博主测试项目为例:
├─include
│ └─halcon18_x64
│ ├─*.h
│ ├─com
│ ├─halconc
│ ├─halconcpp
│ │ └─*.h
│ ├─hdevengine
│ └─hlib
└─lib
└─halcon18_x64
├─*.dll
└─*.lib
配置结果如下:
INCLUDEPATH += $$PWD/include/halcon18_x64
INCLUDEPATH += $$PWD/include/halcon18_x64/halconcpp
win32: LIBS += -L$$PWD/lib/halcon18_x64/ -lhalcon
INCLUDEPATH += $$PWD/lib/halcon18_x64
DEPENDPATH += $$PWD/lib/halcon18_x64
win32: LIBS += -L$$PWD/lib/halcon18_x64/ -lhalconcpp
INCLUDEPATH += $$PWD/lib/halcon18_x64
DEPENDPATH += $$PWD/lib/halcon18_x64
此处,PWD
指的是项目所在路径
包含Halcon头文件
官方自带例程中,建议使用如下语句包含头文件:
#ifndef __APPLE__
# include "HalconCpp.h"
#else
# ifndef HC_LARGE_IMAGES
# include <HALCONCpp/HalconCpp.h>
# else
# include <HALCONCppxl/HalconCpp.h>
# endif
#endif
说明
- 使用MinGW编译会报错,使用MSVC则不会
- 两种方案需要根据实际情况选择