【问题标题】:Correct name for non-COM, non-.NET DLL?非 COM、非 .NET DLL 的正确名称?
【发布时间】:2010-10-08 12:33:31
【问题描述】:

在 Windows 世界中,好的正确名称是什么。带有导出函数的老式 C++ DLL?不是 COM DLL,也不是 .NET DLL。我们过去通过调用 LoadLibrary() 和 GetProcAddress() 调用的那种 DLL?

我一直称它们为“平面 DLL”,因为调用者无法从 DLL 中实例化对象,但正确的名称是什么?

编辑

感谢您的回答。

只是“DLL”在技术上可能是正确的,但在我工作的地方,每个人都认为“DLL”是指 COM,或者可能是 .NET,所以我需要一个能准确区分我的意思的术语。

【问题讨论】:

    标签: .net windows com dll


    【解决方案1】:

    一个.dll?所有这些其他事情都使用 .dll 提供的基本功能来完成它们各自的事情。如果你想学究气,也许是原始的 .dll,但 .dll 应该没问题。

    【讨论】:

      【解决方案2】:

      “普通汽车”不再有“正确”的名称。 (我确实使用“普通 DLL”。

      COM DLL、OCX、.NET DLL……它们都是 DLL,带有附加功能。例如,没有什么可以阻止您拥有可以通过 COM 或手动 LoadLibrary/GetProcAdress 访问的 DLL。我已经看到了它。您甚至可以通过“普通”非对象化 API 公开相同的对象。

      【讨论】:

        【解决方案3】:

        “Native”可能是最常用的术语,尽管“windows”或“console”在技术上更正确,因为这些是可能使用的子系统(“native”子系统有所不同)。我也听说过使用“C DLL”,暗示与您使用“flat DLL”相同。

        动态链接库是一个通用概念——“Windows 动态链接库”不同于 *nix 的等价物,也不同于托管库。

        在这种情况下,COM 只不过是一种封装约定 - Windows DLL 可以包含 COM 服务器,可移植可执行 (PE) 文件也可以。

        【讨论】:

          【解决方案4】:

          我和查尔斯·格雷厄姆在一起。它们只是 DLL。不多也不少。

          某些 DLL 公开的 API 允许它们与某些编程模式一起使用(例如,公开 DllGetClassObject 和 DllCanUnloadNow 的 DLL 可用于托管 COM 对象(但还有其他方式可以托管 COM 对象))。

          【讨论】:

            【解决方案5】:

            可能是“常规 DLL”。这是我们使用的术语,但“DLL”也可以。

            【讨论】:

              【解决方案6】:

              这是一个“动态链接库”。有时称为“动态链接库”。与“静态链接库”相反,您可以在其中选择自己的毒药。取而代之的是,您使用了毒药,由用户在执行路径的某处随机安装。

              【讨论】:

              • 美丽的表达方式!
              【解决方案7】:

              我一直只是称它们为 DLL,但我并没有在 C++/VB6 世界中停留太久。

              【讨论】:

                【解决方案8】:

                我同意有必要使用术语来描述不能作为托管代码执行(换句话说,托管代码需要互操作)并且不能用作 COM 对象的 DLL。很多时候,开发人员只是说 DLL,这是模棱两可的。是的,将 .Net 类库称为 DLL 并将 COM 进程内服务器称为 DLL 是完全有效的,但出于通信目的,仅说 DLL 是模棱两可的。

                查看我的文章Native Windows Dynamic Link Libraries (DLLs)了解更多信息。

                【讨论】:

                  猜你喜欢
                  • 2012-09-22
                  • 2017-02-15
                  • 2015-02-22
                  • 2013-10-08
                  • 2020-08-22
                  • 2011-04-21
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-09-13
                  相关资源
                  最近更新 更多