2017-10-12 65 views
2

问题Windows如何处理加载DLL的两个不同版本?

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

其他

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

+1

为什么两个程序都会崩溃?您的程序将加载您的DLL;另一个程序,除非有什么错误,否则会加载它的DLL。但是Windows Update与什么有关? –

+0

Windows更新可能会更新DLL –

+0

,但可以加载2关闭相同的DLL的?只有不同的版本?或者在两个程序同时运行时Windows使用上次加载的版本 –

回答

0

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

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

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

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

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

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

相关问题