繁体   English   中英

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

[英]How does windows handle loading two different versions of a DLL?

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

其他

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

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

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

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

如果它们具有数据库的单个路径(版本12),则旧的DLL无法理解版本12,则可能会崩溃。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM