首先,MVTec公司为了兼容旧版本的使用规则,所以开发了一些API给我们去调用,下面安按照VC配置来讲解变化。
头文件目录:
- Halcon13\include\
- Halcon13\include\halconcpp
复制代码
而支持旧版本的头文件目录是
- Halcon13\include\
- Halcon13\include\cpp
复制代码
其次就是引用的lib:
- halcon.lib;halconcpp.lib;
复制代码
而支持旧版本引用的lib为:
- halcon.lib;halconcpp10.lib
复制代码
最后就是要加入的头文件名称和命名空间声明了:
- #include "HalconCpp.h"
- using namespace HalconCpp;
复制代码
这部分将会导致后面声明类型的变化:
- HObject m_Image;
- HTuple m_AcqHandle;
复制代码
其中HObject中Object变成了大写,其他的控制类型没有变化,所有的函数也变成驼峰法命名的方法了,比如:
- OpenWindow(0,0,rect.Width(),rect.Height(),(Hlong)m_hWndView,"","",&m_hWndImage);
复制代码
旧版的函数是:
- open_window(0,0,rect.Width(),rect.Height(),(Hlong)m_hWndView,"","",&m_hWndImage);
复制代码
那么问题来了,如果我想用原来旧版本的函数和声明可以吗???
答案是,肯定可以的,Halcon为了达到兼容,所以开放了宏定义去支持旧版本的函数和API声明:
- #define HCPP_LEGACY_API
- #define HCPP_LEGACY_NAMESPACE
- #include "HalconCpp.h"
- using namespace HalconCpp;
复制代码
把这两个加载在调用Halcon头文件之前就可以了。那么你就可以继续使用Hobject和类似open_window这样的旧函数了,是不是很方便!当然,随着版本的升高,大家也要习惯新版本带来的变化和改进呢!
|