我正在編寫一個DLL來插入另一個(第三方)應用程序。該DLL需要依賴另一組DLL(由於許可原因,我無法靜態鏈接)。依賴於其他DLL的插件DLL
我想我的DLL是「xcopy-deployable」到任何目錄。我也不想要求將這個目錄添加到路徑中。
如果我只是通常的方式構建DLL,Windows將拒絕加載該DLL,因爲它無法在當前進程旁邊找到DLL。
是否有任何幫助Windows找到DLL的好選擇?
要回答一些問題:
- 的DLL是用C++編寫。
- 額外的DLL是QT-dll。
- 我想將額外的DLL放在與我的插件DLL相同的文件夾中。我可以從
GetModuleFileName
獲得該文件夾的名稱。 - 該應用程序是Firefox,該DLL是一個PKCS#11安全模塊。
- 應用程序使用DLL的完整路徑加載DLL(用戶在安裝插件時提供它)。
- 要求將DLL放在System32中或應用程序旁邊可以工作,但它有點混亂,並可能導致卸載程序出現問題。
LoadLibrary
和GetProcAddress
當然會起作用,但在我的情況下並不是真的可行。我在其他DLL中使用了數百個,甚至數千個方法。我真的需要使用導入庫。
我曾考慮過在DllMain中使用延遲加載的dll和SetDllDirectory
。有沒有人嘗試過這樣的事情?
您使用的是什麼技術? 。淨? – 2010-02-05 09:50:33
你的前提是沒有意義的,並且被打破。 – 2010-02-05 09:53:09
你總是可以將DLL放在System32文件夾中... – Kryten 2010-02-05 10:03:41