导出序号没有def文件

时间:2016-07-18 05:43:04

标签: c++ c winapi shell32

我们可以使用def文件导出序号。但系统dll不使用def文件.Still shell32.dll有569个序号导出,user32.dll有181个序号导出。

有没有办法在没有def文件的情况下导出序号?

1 个答案:

答案 0 :(得分:4)

每个导出的函数都有一个序数。链接器自动为它们编号,它从1开始。但是如果你想控制完全值(就像微软与这些DLL有关)那么你必须使用a。 def文件。

只有在客户端代码之前使用了序号时,才需要二进制兼容旧代码并不能重建,你添加或删除导出的功能。准确率在99.99%以内,客户端代码从不使用序数来链接导出的函数。他们总是使用这个名字。如果在.def文件中导出具有NONAME属性的函数,则只会依赖于序数值,从而强制客户端代码使用序号。实际上,只有当你想隐藏出口时才会这样做。

微软永远不会对此作出任何假设,并且在过去的23年中被迫保持这些DLL二进制兼容。负担不是我们的负担。