问题
我正在编写一个使用特定DLL版本的软件。我已在执行目录中找到特定的DLL,因此程序使用该DLL。但是现在我不知道如果加载了特定的DLL并且启动了需要更新版本的其他程序会发生什么。有谁知道会发生什么?其他程序崩溃或我的崩溃吗?
其他
这个问题适用于操作系统:Windows 10和Windows 7。 工作站正在运行Windows更新,因此DLL将是最新的。 用C ++编写代码。
答案 0 :(得分:0)
可以在不同的进程中加载不同的dll。
不同进程的地址空间是独立的,不会相互干扰。
如果DLL使用全局命名的东西(例如磁盘上的文件,互斥,共享内存),那么特定dll的互操作性可能会相互干扰。
如果他们有一个到数据库的单一路径,即版本12,如果较旧的DLL不能理解版本12,它可能会崩溃。
可以使用LoadLibrary
将同一DLL的两个不同版本加载到同一进程中。这将需要通过GetProcAddress或其他一些辅助方法调用一个DLL,但这两个DLL可以存在并在同一个进程中工作。
同一进程中的两个DLL在访问命名对象时也会产生干扰。