首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COM与非COM DLL

COM与非COM DLL
EN

Stack Overflow用户
提问于 2012-10-02 04:58:51
回答 2查看 4.1K关注 0票数 11

我的大部分经验是高级语言,比如Java和VB.NET,我也有一些C++的经验(在大学里)。

我了解COM和由.NET编译器生成的DLL之间的区别。我不能完全理解COM DLL和由C和C++编译器生成的Windows DLL之间的区别。

我想在.NET程序中使用C++动态链接库。我已经设法让它工作起来了。我的问题是:由C++生成的动态链接库和由VB6 (基于COM)生成的动态链接库有什么不同。

我花了一个小时在谷歌上搜索这个,并在MSDN上查找。我以为我不用问问题就能找到答案,但我没有。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-02 05:50:29

这两者之间有很大的区别。这个列表太长了,不能准确地在一篇文章中重现,我会试着突出重点:

  • C++ DLL必须导出它想要供客户端代码使用的每个函数或类。一个COM只导出4个具有熟知名称和行为的函数
  • 使用C++动态链接库的应用程序必须在链接时描述该动态链接库的接口,COM服务器在运行时被绑定
  • 使用C++动态链接库的应用程序必须允许

在启动时找到该动态链接库,通常通过将该动态链接库放在与

  • 相同的目录中或在路径上。在客户端应用程序未指定其位置的情况下找到COM DLL。注册表在运行时用于定位DLL
  • COM服务器不必是DLL。它可以是任何东西,包括同一台机器上的单独进程,或者位于地球另一边的另一台机器上的可执行文件。客户端代码与其在

中的位置无关

特定于COM的Automation子集:

  • COM服务器可用于任何支持COM的语言。在视窗系统中,这就是它们中的任何一个。

最后一个要点可能是,当您认为自己理解COM和.NET dll之间的区别时,您会被绊倒。它们没有任何共同之处,但.NET非常好,并且可以与COM服务器互操作。Tlbimp.exe实用程序非常擅长于掩盖这些差异。

票数 15
EN

Stack Overflow用户

发布于 2012-10-02 05:06:44

Com是一种二进制标准,它允许应用程序使用可互换的二进制模块,任何语言只要满足com标准,就可以生成符合com标准的库。所以什么是不自信取决于一些com库将是本地机器代码,一些可能被管理并通过解释器运行。com真正要做的是弥合c++在源代码级别的oop风格与预建的二进制世界之间的可用性差距。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12680981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档