zoukankan      html  css  js  c++  java
  • COM Vs .NET (Qt ActiveQt)

    COM Vs .NET (Qt ActiveQt) - 番茄鸡蛋面 - 博客园

    COM Vs .NET (Qt ActiveQt)


    这些天在学习Qt的ActiveQt功能,由于对于COM和ActiveX知识的缺乏,虽然读了Qt ActiveQt相关的文档很多遍,
    很多的东西的理解都不是很彻底。于是决定补充一下COM的相关知识。
    在网上查了相关的书籍,看到潘爱民老师翻译的 Essential COM,评论非常不错,而且我也看过原作者的Essental .NET,感觉确实不错,决定要买。 忽然又看到潘老师的自己的著作 COM原理与应用,就先订购这本书,等看完了在班本质论。

    看完书的前三章,真是有种醍醐灌顶的感觉,很多模糊的概念和词汇逐渐变的清晰起来,
    COM的概念,in-process Vs. out-of-process server,COM component, COM Object,
    COM interface, EXE,  DLL(Dynamic Link Library), QueryInterface, IUnknown, GUID.

    今天在查资料,看到了以前down的chm电子文档,From CPP to COM,又豁然开朗了一把,Google查了一下,原来是MSDN上得一篇文章。这本书又把我对COM的认识提升了一层,而且是从C++方面。很多模糊的概念和词汇又清晰了一些,比如
     -declspec (dllexport) dumpbin, 尤其是dll。
    虽然我知道在windows平台上对类库的引用有两种 static library(LIB) 和 shared library(DLL),Qt也可以以这两种模式编译,但是这两种是怎么来的却不是很清楚。看了COM的书后我错误的认为.NET以前的dll都是COM组件。

    dumpbin工具可以查看dll的信息。

    Dumpbin
    The Microsoft COFF Binary File Dumper (DUMPBIN.EXE) displays information about 32-bit Common Object File Format (COFF) binary files. You can use DUMPBIN to examine COFF object files, standard libraries of COFF objects, executable files, and dynamic-link libraries (DLLs).


    Qt CPP COM Interoperation (ActiveQt)
    Qt的ActiveQt Frmaework包括两个部分,一部分是AxServer,可以把Qt应用程序转换为ActiveX Server,另外一部分是AxContainer,用来调用COM组件。这样 C++写的Qt应用程序通过ActiveQt技术就可以和COM交互上了。

    .NET COM Interoperation ( Wrapper mechanism ,RCW and CCW)
    由于公司同时使用.NET, Qt技术,在Qt里面找到了和COM交互的ActiveQt,.NET怎么和COM交互了,查询了网上的几篇文章,对他们之间的交互有了一个大概的了解。由于COM和.NET都是微软自己的核心技术,对于这两个技术之间的interoperation,微软还是提供了解决方案,想想也是,否则是自砸招牌。
    .NET和COM之间的互调实际上原理是一样的,加了一个中间层wrapper class,分别是Runtime Callable Wrapper和COM Callable Wrapper.

    Regasm
    The Assembly Registration tool reads the metadata within an assembly and adds the necessary entries to the registry, which allows COM clients to create .NET Framework classes transparently. Once a class is registered, any COM client can use it as though the class were a COM class. The class is registered only once, when the assembly is installed. Instances of classes within the assembly cannot be created from COM until they are actually registered.

    Tlbexp
    Tlbimp

    .NET COM comparison ( .NET is a better COM)
    Assembly

    (To be continued)
  • 相关阅读:
    1 学习wcf 编写简单的WCF服务流程 并发布在IIS上
    通过FormData对象可以组装一组用 [XMLHttpRequest]发送请求的键/值对,它可以更灵活方便的发送表单数据。
    总结下抽象类Abstract和虚方法Virtual(易混点)
    mac VirtualBox虚拟机装CentOS,并配置网络,使其发布的静态网站能访问
    CentOS 7 1810版本不能使用yum 命令
    C# 选取本月周六日方法
    使用Newtonsoft序列化对象,实现深拷贝
    linq to sql 增删改查
    C# 对象对比是否相等 工作笔记
    zabbix server和zabbix agent的安装
  • 原文地址:https://www.cnblogs.com/lexus/p/2835207.html
Copyright © 2011-2022 走看看