配置方案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則不會
- 兩種方案需要根據實際情況選擇