guanrb
专家
专家
  • 最后登录2017-10-13
  • 发帖数56
  • 金币2889枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:12452回复:149

【原创】如何让Halcon 12运行于Xp系统上

楼主#
更多 发布于:2015-05-05 11:09
注意:以下修改的版本是12.0.0.0的,后续的更新升级版本无需修改就可直接在xp下运行,没必要像下面这么麻烦去修改了,有需要的朋友可以去下载最新版本试试。

之前用vc和Halcon 12写的一个程序,由于需要运行在xp系统上,但是把程序放到xp上会出现下图的错误:

图片:error.jpg



查了一下Halcon 12的文档说明,得到如下解释:
No Longer Supported Operating Systems and Platform Versions
  • Since Windows XP is now officially discontinued by Microsoft, HALCON no longer supports Windows XP.
难道真的就不行了吗?
继续查究,用depends查看dll依赖,发现halcon.dll用到了kernel32.dll的一个api函数GetThreadId,这个函数在xp上没有,但在windows 2003以后的系统都有,把程序拷到windows 2003上运行正常。突然想到如果搞定这个函数不就行了,后来分析发现是halcon.dll的函数HpThreadEqualToSelf里面用到了GetThreadId。
下面给出HpThreadEqualToSelf的汇编代码:

图片:12.jpg


翻译成C语言大概就是:
本部分内容设定了隐藏,需要回复后才能看到

由于Halcon 11是可以在xp下运行的,所以又看了一下Halcon 11这个函数的实现,如下:

图片:11.jpg


翻译成C语言大概就是:
本部分内容设定了隐藏,需要回复后才能看到

到这里就有办法了,
此帖售价 5 金币,已有 107 人购买 [记录] [购买]
此段为出售的内容,购买后显示

修改完后使用论坛提供的Halcon 12试用license可以正常运行。

图片:result.jpg



综上所有分析不难发现Halcon 12不是不兼容xp系统,而是故意不兼容xp系统,当然这样做的目的是为了减少维护和测试的成本,少一个系统,测试的工作量少了很多。
以上所有仅为个人的一点拙见,不好意思拿出来跟大家分享,如果不妥的地方请批评指正。
[guanrb于2016-06-08 10:56编辑了帖子]
巨人1989
工程师
工程师
  • 最后登录2017-10-18
  • 发帖数122
  • 金币1120枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
沙发#
发布于:2015-05-05 14:38
受教了,受教了,受教了,受教了,受教了,受教了,受教了,
hehehe
初学者
初学者
  • 最后登录2015-07-01
  • 发帖数8
  • 金币63枚
  • 贡献勋章0枚
  • 社区居民
板凳#
发布于:2015-05-05 16:27
楼主的分析能力还是很强的
qingzhuye
工程师
工程师
  • 最后登录2017-09-23
  • 发帖数120
  • 金币720枚
  • 贡献勋章0枚
  • 社区居民
地板#
发布于:2015-05-05 23:29
楼主太厉害了,学习了
virtual
技术员
技术员
  • 最后登录2016-09-07
  • 发帖数35
  • 金币162枚
  • 贡献勋章0枚
4楼#
发布于:2015-05-21 19:58
楼主, 实在是太感谢你了.....解决了我的问题,
virtual
技术员
技术员
  • 最后登录2016-09-07
  • 发帖数35
  • 金币162枚
  • 贡献勋章0枚
5楼#
发布于:2015-05-21 20:11
楼主,我还想问一下, 你用什么工具打开halcon.dll的啊,
guanrb
专家
专家
  • 最后登录2017-10-13
  • 发帖数56
  • 金币2889枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2015-05-22 09:30
virtual:楼主,我还想问一下, 你用什么工具打开halcon.dll的啊,回到原帖
很多二进制编辑的工具,像UltraEdit、WinHex之类的,都可以打开。
cool168
技术员
技术员
  • 最后登录2017-08-29
  • 发帖数40
  • 金币156枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2015-05-22 09:40
学习一下,看看如何改动可以在xp上运行
cool168
技术员
技术员
  • 最后登录2017-08-29
  • 发帖数40
  • 金币156枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
8楼#
发布于:2015-05-22 09:48
楼主你直接说把什么位置的哪几个字节改成什么,要不然我的5金币就白花了。
guanrb
专家
专家
  • 最后登录2017-10-13
  • 发帖数56
  • 金币2889枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
9楼#
发布于:2015-05-22 10:14
cool168:楼主你直接说把什么位置的哪几个字节改成什么,要不然我的5金币就白花了。回到原帖
很抱歉。如果我告诉你改哪几个字节,就相当于我把我改好的发给你了,这个是不尊重halcon软件版权的行为,搞不好坛主会把我封了。这里仅仅是授之以渔,而非授之以鱼。另外,说明一下,我没有做过大量测试,不敢保证这样改后的程序能完美运行,有兴趣的可以按照我的方法改完后自己测试。

PS:5个金币也就5毛钱,回复个帖子都能赚3个金币呢。
pente
初学者
初学者
  • 最后登录2015-06-04
  • 发帖数2
  • 金币20枚
  • 贡献勋章0枚
10楼#
发布于:2015-05-31 09:49
感谢分析和分享,学习中,
cvMan
工程师
工程师
  • 最后登录2017-10-13
  • 发帖数91
  • 金币1061枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
11楼#
发布于:2015-06-01 14:37
多谢楼主分享。
huixingshao
初学者
初学者
  • 最后登录2015-10-29
  • 发帖数2
  • 金币50枚
  • 贡献勋章0枚
12楼#
发布于:2015-06-05 16:23
牛。。。。。。。。。。。。。。。。。。。。
john516
初学者
初学者
  • 最后登录2015-06-12
  • 发帖数3
  • 金币17枚
  • 贡献勋章0枚
  • 社区居民
13楼#
发布于:2015-06-12 19:52
高手总能找到蛛丝马迹的
john516
初学者
初学者
  • 最后登录2015-06-12
  • 发帖数3
  • 金币17枚
  • 贡献勋章0枚
  • 社区居民
14楼#
发布于:2015-06-12 19:56
还要加点有点麻烦了,不过总是个学习过程,谢谢!
上一页
游客

返回顶部