我想能夠存儲在子文件夾中的DLL沒有EXE抱怨缺少的DLL。如何讓EXE查看子文件夾,例如「DLL」?如果這與它有什麼關係,我的IDE是Code :: Blocks。如何讓C++程序查找DLL?
回答
使顯式加載(LoadLibrary/GetProcAddress)的這項工作很容易。您正在控制綁定過程,並將完整路徑傳遞給LoadLibrary。
對於隱式加載,您處於系統的擺佈之中。雖然你可以增加PATH變量,但這是非常嚴格的。面對將所有DLL放在可執行文件或修改PATH的選擇,我總是會選擇前者。
還有DLL redirection的選項,但即使是微軟似乎也建議你將DLL放在可執行文件旁邊,而不是使用重定向。
謝謝!現在我可以保持我的文件夾整齊。但是,加載速度稍慢。這可能是爲什麼他們建議把dll放在EXE旁邊。 – Ripspace
可執行建議旁邊的DLL是出於安全原因。 –
有些方法可以通過清單或重定向來做到這一點,但這些都很複雜。
我建議而是使用的結構如下:
myapp.exe
DLLs/
myapp_internal.exe
mydll1.dll
mydll2.dll
在上面的例子中你的實際應用是myapp_internal.exe
,並且它會在DLL中的子文件夾,以便所有的DLL可以正確定位。 myapp.exe
二進制文件只是一個存根應用程序,它執行myapp_internal.exe
。
我希望這有助於!
這是一個非常聰明的想法,它應該適合我。 – Vladivarius
我其實沒有嘗試過這個,但是沒有理由不應該這樣做(着名的遺言)。
- 打開延遲加載您的DLL。這是通過一個linker option or compiler #pragma.
- 在代碼的早期(在調用任何DLL函數之前),修改PATH環境變量的進程副本以包含DLL目錄。這將使進程能夠找到DLL,但不會影響系統PATH變量。
如果您真的想使用LoadLibrary/GetProcAddress,請自己幫忙,並使用wrapper library來簡化它們的使用。
- 1. 如何在非託管C++ dll中查找調用者程序集名稱
- 2. 如何查找由Web應用程序加載的DLL?
- 3. 在C + Win API中編程:如何讓Windows 7查找控件?
- 4. 如何讓我的應用程序使用Visual Studio找到第三方DLL?
- 5. 如何讓Python在程序的位置查找文件?
- 6. 如何讓這個C程序編譯?
- 7. 通過c/C++程序查找mysqlpid
- 8. c#彙編程序dll
- 9. 如何運行.dll程序?
- 10. 如何讓程序
- 11. 如何查找所有依賴dll
- 12. 如何查找DLL入口點?
- 13. 如何將C/C++ dll導入到.NET應用程序
- 14. 如何將C++ dll綁定到我的C#程序 - winCE
- 15. 如何從C#窗口應用程序項目調用C++ dll
- 16. 如何從C++/CLI應用程序調用C#.dll?
- 17. 如何使用Turbo C從C程序創建DLL
- 18. C#如何編程查找功能
- 19. c#dll找不到
- 20. 如何從具有DLL的ASPX應用程序查找內存泄漏
- 21. 從C#程序調用一個C DLL
- 22. 在C程序中的C++ dll
- 23. 從C#應用程序調用C++ DLL
- 24. 如何使用MongoDB C#驅動程序進行$查找?
- 25. 如何在C程序中查找乘法矩陣的錯誤
- 26. c程序查找調用函數
- 27. 如何查找ELF的程序頭數
- 28. 如何查找computervision程序的圖像
- 29. 如何查找程序崩潰
- 30. 查找DLL以從WinForms應用程序訪問SQL Server 2008R2
您可以將文件夾添加到您的PATH – Cyclonecode
我希望能夠將文件夾分發到其他計算機而無需設置其路徑。 – Ripspace
然後將其放在與* .exe相同的目錄中,請參閱:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx – PeterT