vs +QT5.8.0 配置32位以及64位以及halcon的dllbug

时间:2024-05-19 22:13:44

前言:在最近的项目中,用到vs2015以及qt和halcon2019的联合编译。

需求时目标平台位win7 64位或者时32位

刚开始只考虑了64位,因此使用了qt5.8.0 64位的。后面因位需求又用到了32位

故qt5.8.0 32位以及5.8.0 64位两个都安装了

链接:https://pan.baidu.com/s/1XGrRgZU7LsClZvinkLGjAQ 
提取码:flkp

(qt5.8.0 32位的)

同理halcon2019都要安装64位和32位的

halcon这里又一个比较坑人的地方在于,在安装的时候,选择32位安装的时候可以选择64的运行环境,令人开心的是bin文件夹下存在x64和x84的动态库

但是在lib文件夹下只有叉86的lib。

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

 解决办法就是装两边一边x86,X64,把lib库保存下来。

q't5.8.0安装之后两个版本安装之后配置需要的版本都是有的,图下的32是人为修改的以便辨识。

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

vs2015 配置qt和halcon在这里就不赘述了

两个链接奉上

https://blog.****.net/u014265347/article/details/54972611

VS2015_Qt5_Halcon混合编程 - onefish51 - 博客园

现在主要就是切换配置x86和x64的步骤:

第一步:按照上面说的将qt和halcon的各两个版本安装好之后

第二步:选择vs里边的qt vs tools  里边的qt options

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

第三步:qt option里边先点击 add 把 msvc2015(x86)和msvc_64(x64)的qt编译版本加进来,然后选择一个默认的defult的编译版本,最后点击ok

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

第四步:继续打开QT VS TOOLS 里边的QT  proiect setting ,然后 version 选择你要编译的版本。

vs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbugvs2015 +QT5.8.0 配置32位以及64位以及halcon的dllbug

第五步:则是工程项目属性的设置

具体如下(针对自己安装目录设置)

vc++目录
包含目录:

C:\Qt\Qt5.8.0\5.8\msvc2015_64\include(x64)
C:\Qt\Qt5.8.0.32\5.8\msvc2015\include(x86)

C:\Program Files\MVTec\HALCON-19.11-Progress\include
C:\Program Files\MVTec\HALCON-19.11-Progress\include\halconcpp

库目录:
C:\Program Files\MVTec\HALCON-19.11-Progress\lib\x64-win64(x64)
C:\Program Files\MVTec\HALCON-19.11-Progress\lib\x86sse2-win32(x86)
c++附加包含目录:
.\GeneratedFiles
.
$(QTDIR)\include
.\GeneratedFiles\$(ConfigurationName)
$(QTDIR)\include\QtGui
$(QTDIR)\include\QtCore
$(QTDIR)\include\QtANGLE
$(QTDIR)\include\QtWidgets

连接器
常规附加库目录

C:\Program Files\MVTec\HALCON-17.12-Progress\lib\x64-win64
$(QTDIR)\lib

输入附加依赖项
debug下的

qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
halconcpp.lib
halcon.lib

release下的

qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
halconcpp.lib
halcon.lib

最后写上自己遇到的bug:

在vs2015调试的时候,整个程序没问题,但是打包exe的时候,程序能打开正常运行,但是显示处理图像的过程时候老是在闪,最后经过各种的排查发现是一个halcon的dll(hcanvas.dll)这个dll应该是和显示有关系,搞了我好就,幸亏同组的大佬牛皮,帮我解决了这个bug。

解决这个bug的思路;开始设置了电脑环境变量(halcon和qt的),然后点击生成的exe,发现是正常的。但是在打包生成exe(已经将所有需要的dll都放在了文件夹下)还是出现闪烁bug,然后把文件夹下的exe里关于halcon.dll和halconcpp.dll删掉了,点开发现又是正常了,说明是halcon dll少的的问题。因为文件夹下没有东西,程序会自动到环境变量下找需要的dll。在后面的dll的文件里逐步排查到少了hcancas.dll.终于找到了。太难了!!!!!