windows如何处理加载两个不同版本的DLL?

时间:2017-10-12 05:48:31

标签: c++ windows dll

问题

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

其他

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

相关问题