在C++中使用CognexVisionpro (修订2.0)
由于visionpro在7.2以及后续的版本中全面支持.net架构,不在发布COM组件。所以不能在VC++中直接使用visionpro. 但是可以利用interop 将.net 的程序封装为要吧在VC++中调用的COM组件。使用方法如下:
VB.net中建一个工程InteropUserControl
添加reference
代码中加入 improts …
加入函数 例如 public OpenImage()
界面中加入显示内容。
以上内容与VB.net编程一致。在此不再详述。
编译
在debug 文件中输出两个文件,*.dll, *.tlb
注意:编译需要管理员权限。 Register for COM interop 勾选。
3,注册dll, tlb文件。
将*.dll ,*.tlb文件copy至system32下。
管理员权限运行cmd.exe
regasm.exe的全路径, 在C:\Windows\Microsoft.NET\Framework\v4.0.30319
在命令中输入:C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe .dll /tlb:.tlb.
注册成功。
卸载命令:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe .dll /unregister /tlb:.tlb.
如果是64位系统,请选择Framework64
全局程序集缓存工具
C:\Windows\system32\ gacutil.exe /i *.dll
Register DLL Assembly Gacutil.exe(全局程序集缓存工具)
全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容。
此工具会自动随 Visual Studio 一起安装。 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示)。
使用方法如下:
方法1: (1).开始菜单->Microsoft Visual Studio 2010 ->Visual Studio Tools->Visual Studio Command Prompt (2010) 命令提示,在控制台中输入 gacutil.exe 回车,既可以看到一些参数。
(2).输入:gacutil.exe -i dll路径,就可完成DLL的注册。
注:如果输入gacutil.exe找不到,我的电脑里面安装了VS2010和VS2013,使用此方法失败。
方法2:(1).在路径C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools 下找到gacutil.exe。(不同的操作系统,可能不一样)
(2).打开cmd,输入cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools,进入当前路径下,
然后输入gacutil /i C:\Projects\Code\EAR\Branch20130515\Telerik\Telerik.OpenAccess.dll即可完成注册。
注:该方法主要是找到gacutil.exe,进入该路径下,注册对应dll所在的物理地址。
以上完成了使用 Gacutil.exe 注册DLL, Gacutil.exe具体的使用请参见 http://msdn.microsoft.com/zh-CN/library/ex0ss12c.aspx 。
4,VC中的调用。
在 头文件中加入:
#import "C:\Windows\system32\VB_netToVB6.tlb"raw_interfaces_only, raw_native_types, no_namespace, named_guids, no_implementation
定义成员变量:
CComQIPtr<_InteropUserControl>m_pUserControl;
在界面中添加ActiveX 控件,前面VB.net生成的,*.interopUserControl
在初始化中将控件与成员变量绑定:
m_pUserControl=GetDlgItem(IDC_INTEROPUSERCONTROL1)->GetControlUnknown();
在需要的地方调用VB.net中编写的方法:
m_pUserControl->OpenImage()
注意:dll,在编译的过程中可能会被破坏,需要重新注册。修改界面后,需要重新生成强制签名。
至此,你学会了在VC中调用VB.net中封装的COM!
在C++中使用CognexVisionpro (修订2.0)相关推荐
- 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- Python使用numpy中trim_zeros函数去除首尾0值的语法
Python使用numpy中trim_zeros函数去除首尾0值的语法 目录 Python使用numpy中trim_zeros函数去除首尾0值的语法 #numpy中trim_zeros
- mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null
我正在使用此查詢返回存儲在$ sTable中的歌曲列表以及存儲在$ sTable2中的總項目的COUNT.如何在MySQL中使用COUNT時返回0而不是null /* * SQL queries * ...
- 1---结构体中最后一个成员为[0]长度数组的用法
结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58 分类: C/C++ 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: 1.不需要初始 ...
- 在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题
在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题. 要让自己在php方面有所造就,就得自己写实例,做项目.只有这样才能遇到问题, ...
- oracle布尔true 1,将.NET布尔数据类型映射到实体框架中的oracle数(1,0)会抛出错误
将.NET布尔数据类型映射到.edmx文件中的oracle号(1,0)会抛出以下错误. Error 2019: Member Mapping specified is not valid. The t ...
- drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明
按照本说明,你就可以成功的在Debian 10(Buster) Linux服务器中安装好drupal 8.8.0版本,已亲测能稳定运行. 先决条件 在开始安装之前,对安装的最低要求是: 数据库服务器, ...
- java string jdk_Java.lang.String中JDK API 1.6.0摘要。
Java.lang.String中JDK API 1.6.0摘要. String 类代表字符串.示例: String str = "abc"; 字符串是常量,它们的值在创建之后不能 ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
最新文章
- [CES 2018] TPCast发布升级版本,将支持微软MR设备
- Python 深浅copy 和文件操作
- debian10安装mysql_ECS Debian 系统安装mysql数据库的具体操作
- 数据科学入门与实战:玩转pandas之六时间序列
- win10耳机插入电脑里没有声音的新感想
- 电脑自带软件使图片底色变为透明(抠图白底)
- RedHat认证笔记-RH124
- 一哥答疑,如何面对繁杂的数据需求?
- shell中vi的基本操作及Xshell 常用命令
- 告别传统机房:3D 机房数据可视化实现智能化与VR技术的新碰撞
- 三点确定一个圆(输出圆心、弧长、圆心角、方向)
- 能上QQ不能打开网页的解决方法
- 《成都,今夜请将我遗忘》读后感
- 盘点那些有逼格的网站
- codeblocks-13.12mingw 配置opencv-3.1.0(一)
- wamp无法启动Apache Apache服务启动失败解决方法
- pgadmin 启动后无法正常进入
- 卫生纸玫瑰花折法5步_手工折纸:[12]玫瑰花的折法
- java判断浏览器杂项_java简单代码判断浏览器代码
- OpenCV之亮度、对比度详解