这个问题的根本原因在于系统中无法检测到halcon的配置信息!出现这个问题有下面两种情况:
1.安装的时候提示无法写HKLM,从根本上把环境变量没有添加进去;
2.Halcon使用没有问题,二次开发可以写程序,运行时候提示halcon相关模块丢失;
- 无法加载+DLL“halcon”:+找不到指定的模块。+(异常来自+HRESULT:0x8007007E)。
复制代码
问题解决1:
单纯的问题1,这个可能是由于不是以管理员方式安装导致的权限不够无法操作注册表所致,安装后不影响正常使用Halcon;
但是做二次开发后会出现模块丢失,可以尝试本站的版本切换工具,以管理员方式运行再次切换写入注册表试试,一般可以解决。
问题解决2:
简单解决:把缺少的模块dll(如halcon.dll、halcondotnet.dll)放到运行目录,可以解决。但是每个工程都要单独进去(不推荐)。
看到有的人说把halcon.dll这些放到system32下面去,仅仅一个版本的库可以这么做,但是多个的话就不适合了。
这个问题核心就是因为halcon的runtime没有找到,那么runtime版本就是为了在非开发电脑上使用安装的,那么runtime做了什么事情呢?
它不是把halcon这些依赖放到system32下面,而且把系统支持匹配到全局里面去,也是下面的根本解决方法,不需要动Halcon任何文件。
那么我们就来说是dll加载顺序(依次查找,全部找完都没有就提示dll找不到):
1.应用程序EXE所在的同一目录;
2.进程的当前工作目录,通过API函数GetCurrentDirecory()来获取;
3.Windows系统目录,C:\Windows\system32,通过函数GetSystemDirecory()来获取;
4.Windows目录,如:C:\Windows,通过GetWindowsDirectory()来获取;
5.列在Path环境变量中的一系列目录;
根本解决方法:
把Halcon运行支持目录添加到系统环境配置中去(windows系统环境支持都需要在PATH目录),因为这个目录里面还有很多采集的库需要依赖,特别很多人写halcon的相机采集的时候,其实整个目录里面的dll都是需要依赖的,也就是Runtime内容,所以上面那种简单解决不能有效解决hAcqGigeVision.dll这种缺少,你要拷贝好多依赖的把整个bin都拷贝到system32下面去?没必要。
Win10打开设置:此计算机->右键属性->系统“高级系统设置”->系统属性->高级->底部“环境变量(N)”
比如现在的Halcon安装目录为:
- D:\Program Files\MVTec\HALCON-12.0\bin\x86sse2-win32;
复制代码
那么对应的环境变量代码为:
- %HALCONROOT%\bin\%HALCONARCH%;
复制代码
把上面这句代码添加到环境变量PATH目录中即可,记得该句前面和后面的分号不可少,然后重启即可解决(推荐方式)。
如果这个变量不能被实际的路径代替,请直接把下面的代码放到PATH目录,不过就不能多版本切换使用了,因为每次都要手动改。(不推荐方式)
- D:\Program Files\MVTec\HALCON-12.0\bin\x86sse2-win32;
复制代码
也有可能环境变量存在了Halcon的配置信息,但是还是不行?很有可能安装的目录含有中文或者其他符号识别不了等等原因,那么只能采取简单解决方案了。
最新版本的Halcon版本切换助手已经加入了环境变量runtime的自动修复,修复完成后即可正常使用无需重启计算机!
|