非COM,非.NET DLL的正确名称?

时间:2009-02-19 05:46:24

标签: .net windows com dll

在Windows世界中,商品的正确名称是什么。具有导出功能的老式C ++ DLL?不是COM DLL,不是.NET DLL。我们以前通过调用LoadLibrary()和GetProcAddress()来调用的DLL?

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

修改

感谢您的回答。

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

8 个答案:

答案 0 :(得分:4)

一个.dll?所有其他东西都使用.dll提供的基本功能来完成各自的事情。如果你想要迂腐,也许是原始的.dll,但是.dll应该没问题。

答案 1 :(得分:3)

没有“正确”的名称,“普通汽车”有一个“正确”的名称。 (我确实使用“普通的DLL”。

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

答案 2 :(得分:2)

“Native”可能是最常用的术语,但“windows”或“console”在技术上更正确,因为这些是可能使用的子系统(“本机”子系统是不同的)。我也听说过“C DLL”,暗示与你使用“扁平DLL”相同。

动态链接库是一个通用概念 - “Windows动态链接库”与* nix等效,以及托管库不同。

COM只是这个上下文中的封装约定 - Windows DLL可以包含COM服务器,可移植可执行(PE)文件也是如此。

答案 3 :(得分:2)

我和Charles Graham在一起。它们只是DLL。没什么,没什么。

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

答案 4 :(得分:1)

可能是'常规DLL'。这是我们使用的术语,但'DLL'也适用。

答案 5 :(得分:1)

这是一个“动态链接库”。有时也被称为“dynalink库”。与“静态链接库”相反,您可以选择自己的毒药。相反,你可以使用用户在执行路径上的某个地方随机安装的毒药。

答案 6 :(得分:0)

我总是把它们称为DLL,但是我没有长时间呆在C ++ / VB6世界中。

答案 7 :(得分:0)

我同意需要术语来描述不能作为托管代码执行的DLL(换句话说,需要interop供托管代码使用)并且不能用作COM对象。很多时候开发人员只是说DLL而且含糊不清。是的,将.Net类库称为DLL并将COM进程内服务器调用为DLL是完全有效的,但为了进行通信,只是说DLL就不明确了。

有关详情,请参阅我的文章Native Windows Dynamic Link Libraries (DLLs)

相关问题