完美解决HALCON C#编程目标平台冲突问题
楼主#
更多发布于:2016-11-23 10:06
背景: 目标机器工控机使用11.0.1 32位Halcon 原因你懂的。开发环境Win10 X64 + VS2015 + Halcon 11.0.3 X64 & X86
问题1: 开发机器上开发Halcon程序,目标平台只能使用AnyCPU 或者 X64,使用X86就不行,程序会自动崩溃无提示。单步跟踪会在这里出错: this.hWindowControl1 = new HalconDotNet.HWindowControl(); 更多描述见我以前的一个求助帖子: http://www.ihalcon.com/read-6410.html C#添加Halcondotnet.DLL目标平台设为X86就出错
每次调试都是使用AnyCPU模式,然后,通过了,再换成X86,生成程序放到工控机。这种操作方法看起来没问题,而某些库,比如现装的一个相机库,只能使用X86模式,导致开发机器上就不能同时调试涉及相机和HALCON的程序。开发库目标平台冲突,没办法啊,每次调试这个的时候先把那个卸载了。卸载Dll引用,添加Dll引用,烦死了。
问题2: 如果工控机上使用11.0.1 版本Halcon 安装的时候勾选了X64 Verson。 C#是不能使用Halcon的,能编译,不能启动,程序会自动崩溃无提示。单步跟踪会在这里出错: this.hWindowControl1 = new HalconDotNet.HWindowControl();
问题分析与解决: Halcon版本不对,对于问题1,是使用了X64版本的Halcon,可是电脑上明明X86 X64都装了,halcondotnet.dll文件也就一个,没有版本之分。原来环境变量里有个字段HALCONARCH被设为了x64-win64,它表示使用的版本,将其设为x86sse2-win32,就可以使用X86版本halcondotnet.dll。
Dll版本在这里切换。问题2就迎刃而解,11.0.1X64版本Halcon是不能使用,(you know why),只能使用X86版。然而Halcon在安装了X64和X86版的时候HALCONARCH默认设为了X64模式,导致不可用,解决这个问题,重装Halcon,不勾选X64,或者将HALCONARCH,改为x86sse2-win32
最后: 这个问题,不知道是不是大家早就知道了,反正困扰我好久了,:)
C++过来的机器视觉新手,望多交流。
|