簡體   English   中英

在Delphi中加載同一DLL的兩個實例

[英]Load two instances of the same DLL in Delphi

這是我的問題:我想創建同一DLL的兩個單獨的實例。

以下不起作用,因為Handle1和Handle2將獲得相同的地址

  Handle1 := LoadLibrary('mydll.dll');
  Handle2 := LoadLibrary('mydll.dll');

以下工作,但我必須復制DLL並將其重命名為其他東西(這看起來有點傻)

  Handle1 := LoadLibrary('mydll.dll');
  Handle2 := LoadLibrary('mydll2.dll');

有沒有辦法只有一個DLL文件,但加載它的幾個實例?

我不認為這是可能的。

你必須編寫一個加載dll的.exe。 然后你可以跨越多個進程(.exe),每個進程都會運行自己的dll實例。 您必須使用IPC(進程間通信)技術與.exes進行通信。 當然可行,但不是一個明智的選擇。

它不適用於LoadLibrary,因為Windows檢查dll是否已加載並將一次又一次地返回相同的句柄。

我有一些代碼本來是從綁定到可執行文件的資源加載一個DLL但我想也可以對一個充滿文件內容的內存區域做同樣的事情。 我看不出為什么它不會工作兩次,但我沒有測試過它。

你可以在這里找到它: http//svn.berlios.de/viewvc/dzchart/utilities/dzLib/trunk/src/u_dzResourceDllLoader.pas?view=markup

它是我的庫dzlib的一部分,可以在MPL下找到。

Windows XP為Win32 DLL引入了並行執行( 這些人對它有很多了解)。

有很多箍你現在可以:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM