我了解到您可以:
-
将 .DLL 文件转换为
.DEF 文件,其中包括其导出
(编辑:这不适用于许多约定)
- 将 .DEF 文件转换为 .LIB 文件,您可以使用该文件链接到 DLL
为什么(大多数)链接器不能链接到给定 仅 .DEF 文件而不是 .LIB 文件的 DLL?
最终,这里的答案是“因为没有人非常想要它,而且它并没有真正帮助任何事情”。
DEF 文件是为 DLL 创建导入库的输入文件。然后,稍后,当另一个链接使用 DLL 时,importlib 本身就是一个输入。 importlib 从外面看起来很特别,但当你看里面时,它实际上只是一个稍微特殊的库,里面有对象。
完全可以修改链接器以直接获取 def 文件(或 DLL,就此而言)。
但是链接器的设计中心是它以对象为输入并输出PE可执行文件。因此,将 DEF 或 DLL 作为输入超出了设计模式。
除此之外,它毫无意义 - 允许链接器将 DEF 文件或 DLL 作为输入既不会启用任何重要的新场景,也不会阻止任何东西。将您拥有的 DEF 文件(即使没有实际的 DLL)转换为可用的 importlib 只需片刻(只需为每个 DEF 条目创建假的空函数并链接它)。因此没有理由添加直接链接 DEF 文件的功能。
马丁
我是一名优秀的程序员,十分优秀!