簡體   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