我使用MSVS 2010和MSVC++ E 2010在C++中構建我的應用程序,並且我注意到很多我的朋友(他們在PC上測試我的應用程序)未在其計算機上安裝Microsoft C++運行時庫。我已經開始在我的應用程序中包含Microsoft C++可再發行組件包,但這似乎沒有必要。我能否將庫包含在我的可執行文件目錄中?我知道其中一個使用的庫是msvcr100.dll,但是還有其他我需要包含的嗎?或者是我的最佳選擇redistro?包含MS C runtime distro的替代品?
2
A
回答
5
在您的項目選項中,對於代碼生成,您可以選擇STATICally linked libraries而不是DLL版本。這消除了像這樣的外部依賴的需要,代價是更大的EXE。
1
當您將應用程序構建到靜態運行時時,無需分發運行時DLL。
否則,您必須包含Microsoft運行時。
2
你不一定需要有具有可執行目錄中運行時庫,你可以使用一個Manifest File具有指向運行時,如果你希望一個相對路徑。但是,是的,您可以在應用程序的安裝中包含這些庫。
我認爲我們在msvcr以及msvcrt和msvcp DLLs的問題上寫了這些,可能會有點矯枉過正。
1
用/ MT編譯項目解決了分發問題。但要小心,當你使用DLL時,它可能會讓你陷入麻煩。他們將擁有自己的內存分配器。如果他們導出了一個公開指針或C++對象的函數,這些對象需要由客戶端代碼釋放,那麼您將很難診斷手中的內存泄漏。很容易做到,例如只返回一個std :: string。
Anyhoo,通過右鍵單擊解決方案資源管理器窗口中的項目,屬性,C/C++,代碼生成,運行時庫設置找到該設置。
另請注意,VS2010支持本地部署。只需將msvcr100.dll文件放在與EXE相同的目錄中即可。如果使用STL或iostream,則還需要msvcp100.dll。
相關問題
- 1. MS OpenXML SDK的替代品
- 2. CardLayout的替代品不包含對所含組件的引用
- 3. C++模板的替代品?
- 4. Maven替代品:包含美元符號的替換值
- 5. 任何使用MS Kinect的替代品?
- 6. MS Visual Studio .NET的替代品
- 7. EasyHook替代品C#
- 8. 替代品VS
- 9. C++報告的替代品?
- 10. YQL的替代品
- 11. 是否有替代品可以用來替代iPhone SDK上包含的STL?
- 12. OPENDATASOURCE替代品
- 13. JMegahal的替代品
- 14. ASIHTTP的最佳替代品,替代品或替代品用於下載隊列
- 15. Perl的替代品,在換行空格替代品也
- 16. javax.comm的替代品
- 17. MSMQ的替代品
- 18. underscore.js的替代品
- 19. @Formula的替代品?
- 20. @「」的替代品?
- 21. Dreamweaver的替代品?
- 22. Tika的替代品
- 23. 測試流星包 - TinyTest的替代品?
- 24. NAnt替代品
- 25. tight_layout的替代品()
- 26. C# - 替換揹包中的物品
- 27. WiX替代品?
- 28. pdftohtml的替代品
- 29. 替代包含泛型的方法
- 30. PathListBox的替代品
完美,正是我所需要的!沒有運行時,它在我朋友的個人電腦上工作得很好。 – Dooms101 2010-09-08 23:38:38