gpt4 book ai didi

c++ - "Windows doesn' t 支持正确的动态链接是什么意思?”

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:44 30 4
gpt4 key购买 nike

我已经阅读了 Linux 调用 dlopen()dlsym() 的文档,它们分别打开一个动态库并在库中加载一个符号。

这些调用似乎等同于 Windows 的 LoadLibrary()GetProcAddress()

我在这篇文章中读到“Windows 不支持正确的动态链接”:Running LLVM passes on Windows 10 gives no output in terminal? .

Linux 和Windows 动态库调用不同的原因是什么?

唯一的区别是 Linux 上的动态库可以加载可执行文件中的符号吗?但这意味着可执行文件也是 Linux 上的库,因为 dlopen() 在动态库上运行。

最佳答案

Windows 确实 支持正确的动态链接。不同之处在于 Windows 不支持不正确动态链接,您将可执行文件链接到库(即错误的方式)。这个错误在 Windows 上是不可能的,因为它的可执行文件没有导出表。

也就是说,你的逻辑有点问题。可执行文件和动态库没有太大区别,即使在 Windows 上也是如此。 LoadLibrary 实际上会加载可执行文件;失败的是 GetProcAddress

至于插件逻辑,使用抽象(纯虚拟)类作为接口(interface)在 C++ 中很容易安排。

关于c++ - "Windows doesn' t 支持正确的动态链接是什么意思?”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996607/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com