• VS2010 C++ 创建COM组件


    1、项目中要使用到com组件,于是了解了一下com,并根据《C#高级编程》中关于com的介绍用vs创建了一下com,用于实验。以下均根据书中的demo做一遍,熟悉一下而已。

    2、创建CoM组件不能使用C++或VB2010,而应使用VB6.0或C++。以下使用ATL、C++、VS2010.

      使用C#或VB9.0可以创建.NET组件,VB9.0及C# 通过一个封装器就可以把该组件用作COM对象,而封装器是真正的COM组件。

    2.1 创建ATL项目and finish.

    2.2 往project 中添加类。

    2.3 往IWelcome接口中添加方法:

    2.4 编辑.idl文件,往接口中添加自定义属性,改变C# RCW生成的类和接口的名称。

    2.5 添加IMath接口:

    复制IWelcome接口的定义并做修改,其中UUid可以用guidgen生成。

    2.6 修改COMDemo.h文件

    2.7 在COMDemo.cpp中实现各函数:

    2.8 build and generate "COMServer.dll"

    2.9 使用工具生成互操作程序集

    tlbimp COMServer.dll /out:Interop.COMServer.dll

    2.10 在电脑中注册新生成的COMServer组件。

    cmd切换到com组件所在的目录,

    运行:regsvr32 COMServer.dll 进行注册

    运行:regsvr32 /u COMServer.dll则进行反注册

    2.11 在C# 项目中使用COM组件

    1)、添加com引用(注册了COM组件之后才会在此显示出需要的组件)

    2)、添加namespace

    3)、使用COM对象并释放

    4)、结果:

    5)、注意事项:

    COM对象在不再使用的时候需要释放,因为COM使用本地内存堆,而.net对象使用托管的内存堆。垃圾回收器只负责回收托管的内存。

    2.12 使用C#的动态语言,利用COM的IDispath接口,不使用互操作程序集直接使用COM组件:

    此时项目中无需添加COM组件的引用,亦无需将COM组件放入运行目录中,只需客户机中已经注册了COM即可。

  • 相关阅读:
    Algs4-2.2.1给出原地归并排序merge的排序过程
    Algs4-2.2.2给出自顶向下归并排序的排序过程
    Algs4-2.1.38不同类型的元素
    Algs4-2.1.36不均匀的数据
    Algs4-2.1.37部分有序
    Algs4-2.1.35不均匀的概率分布
    Algs4-2.1.34罕见情况
    升级python到2.7版本pip不可用
    随机验证码
    python文件操作
  • 原文地址:https://www.cnblogs.com/hshuzhao/p/4198718.html
Copyright © 2020-2023  润新知