近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意。
加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义。
我的环境为 WIN10 64位 halcon12 用64位到处C++ 文件,VS2015免费共享版。
(如果要生成32位的话,需要halcon12 用32位程序 导出C++,并且需要把VC切换为X86平台,
库目录改为 C:\Program Files\MVTec\HALCON-12.0\lib\x86sse2-win32;
配置的第五部,项目属性 -- 配置属性 -- 链接器 -- 输入 -- 附加依赖项 -- 添加 halconcpp.lib,
这里的halconcpp.lib,需要改为C:\Program Files\MVTec\HALCON-12.0\lib\x86sse2-win32\halconcpp.lib
其它地方和64位相同。)
下面开始:
一、VS2015方面
1、先生成一个MFC对话框程序,步骤略。(我得工程名称为:TMD视觉检测)
VS配置:
2、先在配置管理器,把平台改为X64,因为修改这里的时候,下面的所有设置都会恢复默认。所有最好先设置这里。
3、项目属性 -- 配置属性 -- VC++目录 -- 包含目录 -- 添加 $(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;
4、项目属性 -- 配置属性 -- VC++目录 -- 库目录 -- 添加 $(HALCONROOT)\lib\$(HALCONARCH);
(图同上)
5、项目属性 -- 配置属性 -- 链接器 -- 输入 -- 附加依赖项 -- 添加 halconcpp.lib
配置完毕!
二、实际操作部分:
1、halcon导出C++文件,切记用64位导出,我导出的文件名为:VCDemo64.cpp
2、添加CPP到VS,在资源管理器中,源文件 -- 右键 -- 添加 -- 现有项 -- 找到上一部导出的halcon CPP文件
3、新建头文件hh.h ,资源管理器 -- 头文件 -- 添加 -- 新建项 -- 选择头文件 -- 命名为hh.h (随便)
hh.h 添加内容:
#pragma once #ifndef MY_FILE_H_ #define MY_FILE_H_ void action(); #endif
4、修改对话框Dlg CPP文件,
添加头文件及空间(如下图):
# include "HalconCpp.h" # include "hh.h"
using namespace HalconCpp;
5、修改halcon CPP 文件 VCDemo64.cpp,
在最顶部添加头文件:
#include "stdafx.h"
截止到此,重新生成解决方案,可编译成功。
三、添加按钮激活。
1、在VS 窗体对话框中 添加 按钮
在按钮事件代码中,添加后如下:(此段代码为halcon导出的CPP主函数段)
void CTMD视觉检测Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 SetSystem("width", 512); SetSystem("height", 512); #if defined(_WIN32) SetSystem("use_window_thread", "true"); #elif defined(__linux__) XInitThreads(); #endif #ifndef __APPLE__ action(); #else ret = apple_main(argc, argv); #endif return; }
上面你复制过来的时候,return 会报警,删掉即可。
重新生成解决方案,编译成功,运行,点击按钮,如下图:(产品就不显示了)
未完待续。