[英]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下找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.