gpt4 book ai didi

c++ - Windows 如何处理加载两个不同版本的 DLL?

转载 作者:可可西里 更新时间:2023-11-01 10:42:15 27 4
gpt4 key购买 nike

问题

我正在编写一个使用特定 DLL 版本的软件。我在执行目录中找到了特定的 DLL,因此程序使用了那个。但是现在我不知道如果加载了特定的 DLL 并启动了另一个需要更新版本的程序会发生什么。有谁知道会发生什么?其他程序崩溃还是我的崩溃?

其他

这个问题是针对操作系统的:Windows 10 和 windows 7。工作站正在运行 Windows 更新,因此 DLL 将是最新的。用 C++ 编写代码。

最佳答案

不同的dll可以在不同的进程中加载​​。

不同进程的地址空间是独立的,不会互相干扰。

如果 DLL 使用全局命名事物(例如磁盘上的文件、互斥体、共享内存),则特定 dll 的互操作性可能会相互干扰。

如果他们只有一个指向版本 12 的数据库的路径,如果旧的 DLL 不理解版本 12,它可能会崩溃。

可以使用 LoadLibrary 将同一 DLL 的两个不同版本加载到同一进程中。这将需要通过 GetProcAddress 或其他一些辅助方法调用一个 DLL,但这两个 DLL 可以存在并在同一进程中工作。

访问命名对象时,同一进程中的两个 DLL 也会产生干扰。

关于c++ - Windows 如何处理加载两个不同版本的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702265/

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