"Windows doesn't support proper dynamic linking?"是什么意思

What is meant by "Windows doesn't support proper dynamic linking?"

本文关键字:dynamic linking 意思 是什么 proper doesn Windows support      更新时间:2023-10-16

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

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

我在这篇文章中阅读了"Windows 不支持正确的动态链接":在 Windows 10 上运行 LLVM 通行证在终端中没有输出?。

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

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

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

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

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