当我们获得实际的 .dll 实现时,为什么我们仍然需要 .lib 存根文件?
我想知道为什么链接器不能仅仅通过查阅获得实际实现代码的实际 .dll 文件中的信息来完成其工作? 我的意思是为什么链接器仍然需要 .lib 文件来进行隐式链接?
导出和相对地址表不足以进行此类链接吗?
无论如何,是否可以仅使用 .dll 而不使用 .lib 存根/代理文件进行隐式链接?
我认为 Windows 可执行加载程序只会代表程序执行 LoadLibrary/LoadLibraryEx 调用(因此称为隐式链接),这是与显式链接的主要区别。 如果这是真的,那么在没有 .lib 的情况下显式地执行该操作应该表明在没有 .lib 的情况下它也是可行的,对吗? 或者我只是说无意义?
i'm wondering why linkers can not do their job simply by consulting the information in the actual .dll files that got the actual implementation code ? i mean why linkers still need .lib files to do implicit linking ?
are not the export and relative address tables enough for such linking ?
is there anyway by which one can do implicit linking using only the .dll without the .lib stub/proxy files ?
i thought the windows executable loader would simply do LoadLibrary/LoadLibraryEx calls on behalf of the program (hence the name implicit linking) which is the main difference to explicit linking. if that is true then doing it explicitly without .lib should indicate that it is doable without it implicitly, right ? or i'm just saying non sense?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可以想到几个原因。
我不知道有什么方法可以单独使用 DLL 进行隐式链接 - 快速搜索发现了几个工具,但我没有使用过其中任何一个。
在这种情况下,我将创建一个单独的源文件,其中包含您需要使用的函数,并动态加载 DLL 并根据需要绑定它们。 例如:
I can think of a a few reasons.
I don't know of any way to do implicit linking solely with the DLL - A quick search revealed several tools, but I haven't used any of them.
In this case, I would create a separate source file with the functions you need to use, and dynamically load the DLL and bind them as needed. For example: