最近收到一个客户发来的一个基于Halcon的C++软件工程,客户需要解决其中bug。将工程打开后发现有多处代码报错,通过配置好VS项目属性后代码报错消除,但接下来出现一系列问题。
问题1:生成解决方案报错
当对工程生成解决方案时VS报大量LNK2001及LNK2019的 无法解析外部符号
错误,如下图:
通过定位错误的位置,发现都为Halcon中的函数无法解析,根据网上搜到的方法,通过检查VS配置以及复制halcon.dll及halconcpp.dll至Debug目录下均无效,最后通过联系客户发现,客户使用Halcon10开发,而我电脑为Halcon12。由此联想到不同版本的dll无法通用故重新复制Halcon10版本的相关dll到Debug目录下,重新生成问题依旧。
再次考虑是否是不同版本的头文件问题,故又将Halcon10下的bin、lib、include文件夹复制到本机与Halocn12相似目录下,重新修改VS配置,将所有路径改为Halcon10相关路径下,此时重新生成发现已经生成成功。接下来就到了第二个问题。
问题2:Halcon算子报异常
生成解决方案后调试程序,客户代码中使用Halcon算子来实现打开相机并采图,但程序运行时提示无法连接相机,同定位发现为Halcon算子open_framegrabber报异常,算子参数都正确,获取错误代码为8600,查询后表示无法打开动态链接库&