halcon12在C#中二次开发编译没错,运行时报: 无法加载DLL"halcon”
Posted 勇哥的机器视觉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了halcon12在C#中二次开发编译没错,运行时报: 无法加载DLL"halcon”相关的知识,希望对你有一定的参考价值。
下面的摘抄的网络上的资料:
Halcon使用没有问题,二次开发可以写程序,运行时候提示halcon相关模块丢失;
问题解决:
简单解决:把缺少的模块dll(如halcon.dll、halcondotnet.dll)放到运行目录,可以解决。但是每个工程都要单独进去(不推荐)。
看到有的论坛说把halcon.dll这些放到system32下面去,其实halcon在安装的时候已经给你配置好了路径了,一般没有必要这样做。
(你想想你是客户,装个软件,遇到错误这么麻烦去解决,客户心里怎么想?)
这个问题核心就是因为halcon的runtime没有找到,那么runtime版本就是为了在非开发电脑上使用安装的,那么runtime做了什么事情呢?
它不是把halcon这些依赖放到system32下面,而且把系统支持匹配到全局里面去,也是下面的根本解决方法,不需要动Halcon任何文件。
根本解决方法:
把Halcon运行支持目录添加到系统环境配置中去(windows系统环境支持都需要在PATH目录),因为这个目录里面还有很多采集的库需要依赖,特别很多人写halcon的相机采集的时候,其实整个目录里面的dll都是需要依赖的,也就是Runtime内容,所以上面那种简单解决不能有效解决hAcqGigeVision.dll这种缺少,你要拷贝好多依赖的把整个bin都拷贝到system32下面去?没必要。
Win10打开设置:此计算机->右键属性->系统“高级系统设置”->系统属性->高级->底部“环境变量(N)”
比如现在的Halcon安装目录为:
那么对应的环境变量代码为:
把上面这句代码添加到环境变量PATH目录中即可,记得该句前面和后面的分号不可少,然后重启即可解决(推荐方式)。
如果这个变量不能被实际的路径代替,请直接把下面的代码放到PATH目录,不过就不能多版本切换使用了,因为每次都要手动改。(不推荐方式)
也有可能环境变量存在了Halcon的配置信息,但是还是不行?很有可能安装的目录含有中文或者其他符号识别不了等等原因,那么只能采取简单解决方案了。
后记:
把halcon.dll复制到程序bin目录下,可以解决开篇的那个报告。
但是当代码导出后运行到
HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8,
"rgb", -1, "false", "default", "[0] USB2.0 UVC 1.3M Webcam", 0, -1, out hv_AcqHandle);
时总是报如下错误
HALCON error #8600: Dynamic library could not be opened in operator open_framegrabber
分析后发现是某个动态链接库无法打开,debug目录下缺少相应的动态链接库
至于少的是哪个dll,目前暂没完全搞清楚,不过,把下面图片目录中的全部dll复制到程序的bin目录下,就不会报错误了。
你可以尝试删除多余的dll反复运行程序,找到到底是哪一个dll是不可缺少的。
网上各人说法不同,如果你有发现,可以在本贴留言告诉勇哥。
另外,本文中所说的指定环境路径的方法肯定是可行的,这样就不用复制全部dll到程序bin目录,但是考虑到我们可能需要不安装halcon的情况下运行程序,所以就没有用这个方法。
标签:halcon
以上是关于halcon12在C#中二次开发编译没错,运行时报: 无法加载DLL"halcon”的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)-System.BadImageFormatException “试图加载格式不正确的程序”问题