2011-02-28 27 views
1

我已經成功地將一個大的MFC項目分成幾個較小的DLL項目。現在我想在我的應用程序文件夾中有一個名爲「DLL」的單獨文件夾,其中放置了所有來自子項目的所有DLL。如何爲應用程序的DLL創建單獨的文件夾?

任何人都可以給我如何實現這一目標的指導?

+0

爲什麼你需要把DLL放在一個單獨的文件夾中?爲什麼你不能將它們包含在與EXE相同的文件夾中? – 2011-02-28 08:22:41

+2

當我打開應用程序文件夾 – 2011-02-28 08:56:04

+1

時,我已經圍繞了大約200個dll文件,所以我不會調用200個DLL文件「幾個較小的DLL項目」。更重要的是,應用程序文件夾的內容應該不是真正相關的。用戶很少直接與文件夾中的應用程序交互。他們點擊一個圖標或使用開始菜單。如果你有一個精心設計的安裝程序,這不應該是一個問題。 – 2011-02-28 09:05:37

回答

-2

編輯:正如埃裏克指出的這不起作用。抱歉。

請參閱Dynamic-Link Library Search Order。簡而言之,您可以使用「HKEY_LOCAL_MACHINE \ SORTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths」下的註冊表項進行操作。 像下面顯示了一個reg文件如何:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe] 
@="C:\\Program Files\\MyCompany\\MyApp\\MyApp.exe" 
"Path"="C:\\Program Files\\MyCompany\\MyApp\\MyDLLs" 
+0

您鏈接到的文檔中的哪個地方使用了推薦的註冊表項? – 2011-02-28 08:36:02

+0

根據您鏈接的頁面:「在計算DLL搜索路徑時不使用App Paths鍵。」 – Erik 2011-02-28 08:37:50

+0

搜索「應用程序路徑」。 – Steve 2011-02-28 08:38:18

3

如果你使用的LoadLibrary,你只需要明確指定加載DLL文件的完整路徑。

如果這些DLL是隱式鏈接的,那麼可以通過兩種方式來實現。

  • 讓安裝程序修改PATH變量。這是侵入性和「壞形式」
  • 編寫一個本地修改路徑變量的「加載程序」應用程序,然後執行真正的可執行文件。

最好的解決方案是簡單地將DLL放在與可執行文件相同的目錄下。

+0

尊重我完全不想 – 2011-03-01 07:43:49

+0

因此,暫時*修改'%PATH%'變量是否可行? – Derek 2013-07-08 20:02:45

3

DLL重定向是一個相當新的功能( Windows 2000 IIRC )。將DLL目錄命名爲<myapp>.exe.local,Windows將首先檢查通過LoadLibrary(Ex)加載的任何內容。這包括延遲加載的DLL。

+1

有關該類型重定向的更多信息,請參見[本文](http://blogs.msdn.com/b/junfeng/archive/2006/01/24/517221.aspx)。 – 2011-02-28 10:14:23

+0

良好的聯繫。所以目錄形式是XP,而不是2000. – MSalters 2011-02-28 10:23:08

+0

那麼,在Windows 2000中''.local'有一些支持,但我不記得具體是什麼。我認爲它可能僅限於COM組件或其他東西。但[並行程序集](http://msdn.microsoft.com/en-us/library/dd408052)直到XP才被引入。 – 2011-02-28 10:48:36

相關問題