我已經成功地將一個大的MFC項目分成幾個較小的DLL項目。現在我想在我的應用程序文件夾中有一個名爲「DLL」的單獨文件夾,其中放置了所有來自子項目的所有DLL。如何爲應用程序的DLL創建單獨的文件夾?
任何人都可以給我如何實現這一目標的指導?
我已經成功地將一個大的MFC項目分成幾個較小的DLL項目。現在我想在我的應用程序文件夾中有一個名爲「DLL」的單獨文件夾,其中放置了所有來自子項目的所有DLL。如何爲應用程序的DLL創建單獨的文件夾?
任何人都可以給我如何實現這一目標的指導?
編輯:正如埃裏克指出的這不起作用。抱歉。
請參閱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"
如果你使用的LoadLibrary,你只需要明確指定加載DLL文件的完整路徑。
如果這些DLL是隱式鏈接的,那麼可以通過兩種方式來實現。
最好的解決方案是簡單地將DLL放在與可執行文件相同的目錄下。
尊重我完全不想 – 2011-03-01 07:43:49
因此,暫時*修改'%PATH%'變量是否可行? – Derek 2013-07-08 20:02:45
DLL重定向是一個相當新的功能(
Windows 2000 IIRC
)。將DLL目錄命名爲<myapp>.exe.local
,Windows將首先檢查通過LoadLibrary(Ex)
加載的任何內容。這包括延遲加載的DLL。
有關該類型重定向的更多信息,請參見[本文](http://blogs.msdn.com/b/junfeng/archive/2006/01/24/517221.aspx)。 – 2011-02-28 10:14:23
良好的聯繫。所以目錄形式是XP,而不是2000. – MSalters 2011-02-28 10:23:08
那麼,在Windows 2000中''.local'有一些支持,但我不記得具體是什麼。我認爲它可能僅限於COM組件或其他東西。但[並行程序集](http://msdn.microsoft.com/en-us/library/dd408052)直到XP才被引入。 – 2011-02-28 10:48:36
爲什麼你需要把DLL放在一個單獨的文件夾中?爲什麼你不能將它們包含在與EXE相同的文件夾中? – 2011-02-28 08:22:41
當我打開應用程序文件夾 – 2011-02-28 08:56:04
時,我已經圍繞了大約200個dll文件,所以我不會調用200個DLL文件「幾個較小的DLL項目」。更重要的是,應用程序文件夾的內容應該不是真正相關的。用戶很少直接與文件夾中的應用程序交互。他們點擊一個圖標或使用開始菜單。如果你有一個精心設計的安裝程序,這不應該是一個問題。 – 2011-02-28 09:05:37