在C++中使用CognexVisionpro (修订2.0)


由于visionpro在7.2以及后续的版本中全面支持.net架构,不在发布COM组件。所以不能在VC++中直接使用visionpro. 但是可以利用interop 将.net 的程序封装为要吧在VC++中调用的COM组件。使用方法如下:

1.      VB.net中建一个工程InteropUserControl

添加reference

代码中加入  improts …

加入函数  例如 public  OpenImage() 

界面中加入显示内容。

以上内容与VB.net编程一致。在此不再详述。

2.      编译

在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

全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容。

此工具会自动随 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! 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值