每个导出的函数都有一个序数。链接器会自动给它们编号,从 1 开始。但是如果您想控制确切的值(就像 Microsoft 对这些 DLL 所做的那样),那么您必须使用 .def 文件。
仅当客户端代码之前使用序数时才需要它,并且您需要与未重建的旧代码的二进制兼容性,并且您添加或删除了导出的函数。为了达到 99.99% 的准确度,客户端代码从不使用序数来链接导出的函数。他们总是使用这个名字。如果您在 .def 文件中使用 NONAME 属性导出函数,则您只会依赖于序号值,从而强制客户端代码改为使用序号。实际上,只有当您想隐藏导出时才会这样做。
Microsoft 永远无法对此做出任何假设,并且在过去 23 年中被迫保持这些 DLL 的二进制兼容。不属于我们的负担。
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |