.NET 如何允许 API 探索已编译的 DLL?

问题描述 投票:0回答:4

.NET 如何允许 API 探索已编译的 DLL?

c# .net dll
4个回答
7
投票

因为DLL包含关于所有类型、方法等的元数据。甚至实际代码也是IL而不是本机代码。

基本上,.NET 二进制文件仍然处于比本机二进制文件更高的级别,并且包含更多有关其中内容的信息。这就是反射发挥作用的原因。


1
投票

我不确定这是否是您要问的问题,但我只能推荐免费工具 .NET Reflector,它可以让您探索任何已编译的 .NET 程序集。

这些天,我使用它的次数甚至比使用已发布的 MSDN 文档还要多,因为它的导航速度要快得多,启动时提供的信息也更多。


0
投票

这要看情况。

DLL 包含导出函数的列表,但可以简单地为这些函数分配一个编号、一个名称,或者可以为它们分配一个 mangled C++ 名称。后者可以提供对函数参数的一些了解,但数据结构、调用约定和其他所需属性通常没有文档记录。

如果它是 COM DLL,则它有可能包含类型库作为资源,但这不能保证。在这种情况下,.NET 可以非常自动地导入该库。

类型库也可以包含在非 COM DLL 中,但这并不是一种普遍的做法。

如果您有一个已编译的 DLL,旨在从非 COM、非托管环境中调用,则需要翻译该 DLL 中应包含的头文件。


-1
投票

一个词:反光镜

© www.soinside.com 2019 - 2024. All rights reserved.