2012-09-11 71 views
0

我有一個DLL存在於某個位置。我創建了另一個依賴於此DLL的應用程序。我如何在運行時引用DLL?如果我將DLL保存在與exe相同的目錄中,它就可以工作。但是,這不是我的情況。我試圖使用regsvr32.exe在註冊表中加載和註冊庫。但是,當我這樣做,然後運行該exe文件,它不會拿起它。在運行程序之前加載/註冊DLL

如果你可以給我一些選擇,那就太好了。而且爲什麼regsvr32.exe在這種情況下不起作用?

回答

2

Regsvr32.exe只適用於特定類型的DLL,即進程內COM服務器。如果它抱怨它找不到DllRegisterServer入口點,那麼它不是這樣一個DLL。

在上一個世紀,當一臺機器具有16兆字節的RAM並且整個操作系統與Windows 7的「去釣魚」牆紙位圖一樣大時,共享DLL是有意義的。你的方式阻止共享DLL。所以你會逃脫可怕的DLL Hell。特別是COM服務器的問題。

但是你可以,你必須要add the directory PATH環境變量。應用程序也可以通過調用SetDllDirectory()來完成。假設它知道DLL的位置,那不是典型的。

最好的辦法就是不這樣做。只需複製DLL。

0

定位的DLL的規則在這裏找到:

http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx

請注意,您可以將相關的目錄添加到PATH環境變量。

如果您有一個特定的位置,您的文件可以始終找到(或從您的應用程序可配置),您可以在呼叫LoadLibrary的呼叫中指定一個路徑。