我是C++編程新手,剛剛完成了一個簡單的計算器。我決定與我的朋友分享,並在幾次嘗試後發現如何在發佈模式下進行編譯。但是,即使在發佈模式下,它仍然依賴於MSVCP110D.dll。我想知道是否有辦法解決這個問題?發佈模式依然依賴於MSVCP110D.dll(C++ MSVS)
回答
1)MSVCP110D.dll是MS C運行時庫的「調試」版本的運行時.dll。所以看起來你的.exe可能並沒有爲「Release」正確構建。
2)下面是 「Visual Studio的運行時可再發行」 信息:
http://www.microsoft.com/en-us/download/details.aspx?id=30679
3)這裏是關於這方面的問題的更多信息:
不幸msvcp100D.dll是一個調試DLL,它不包含在Microsoft Visual C++ Redistrutable包中的 年齡。這通常是因爲 調試版本不向其他開發者發佈。 開發人員在Visual Studio中默認安裝了它。
您可以在「Release」中編譯您的項目,這樣您需要的所有dll將被包含在Microsoft Visual C++ Redistrutable包中。
否則,你可以做所有庫的靜態鏈接(指定 發佈/ MT和/ MTD在調試配置到編譯器選項),但 我個人不推薦becouse你把可執行許多 信息(由調試器使用)會減慢你的應用程序。
解決了我。最近遇到類似的問題。最奇怪的是,我的結果DLL依賴於MSVCR100.dll(不帶'D'),這是正確的,因爲我將/ MDd更改爲/ MD,但也取決於MSVCP100D.dll,由於相同的原因,這看起來不正確。經過長期調查,我發現它取決於預處理器的定義。將_DEBUG更改爲DEBUG解決了我的問題。 – Nahum
我猜你的問題是依賴於dll的調試版本&而不是依賴於dll本身。
這是非常有可能你做的這些事情2
與
/DDEBUG
或/D_DEBUG
OR編譯具有msvcpd.lib
連接一個當你與/DDEBUG
或編譯/D_DEBUG
和#include
其中一個標準的C++頭文件,然後msvcpd.lib我s被拉進(with a #pragma(lib)
這導致依賴於msvcpd ***。dll。
msvcp(d)*。dll是標準C++庫的dll版本。
如果相反,你的問題是依賴於任何版本的DLL,即你想靜態鏈接到C++庫,那麼你可以用_STATIC_CPPLIB
編譯你的程序。
對不起,我對此非常陌生。但是,我將如何去靜態鏈接DLL?當我編譯它時,我將編譯類型從調試改爲發佈。然後它創建了一個包含我的.exe和.cpp的發佈文件夾。 –
@ user2396111右鍵單擊solution - > properties,C/C++,Preprocessor->將_STATIC_CPPLIB添加到各種現有的預處理器定義中。當你在那裏時,檢查DEBUG或_DEBUG是否已經定義。 – user93353
這不是,也是VS2012中不推薦使用的選項。 C/C++,代碼生成,運行時庫=/MT –
您是否在使用其他庫? 也許你已經包含了一個可執行文件的調試版本的dll文件。
- 1. Maven依賴關於發佈
- 2. 用visual studio依賴依賴的C#發佈
- 3. MVC +存儲庫模式 - 仍然依賴於數據模型?
- 4. 僅發佈依賴關係
- 5. 爲什麼MSVS 2010 MFC項目依賴vcredist_x86.exe進行MSVS 2008?
- 6. RESTORE過程是否依賴於模式?
- 7. XML模式 - 依賴於可選屬性
- 8. C++類依賴於函數,但函數依賴於類
- 9. C#依賴注入和策略模式
- 10. 依賴於多發表
- 11. Eclipse依賴於C:\ Users \ User
- 12. 在C++中依賴於浮點表達式是依賴於編譯器的嗎?
- 13. C++相互模板依賴?
- 14. C++模板依賴關係
- 15. 依賴屬性依賴於另一個
- 16. 不依賴於UserControl的依賴屬性
- 17. 在發佈模式下刪除NLog的依賴性
- 18. Rails模型:消息和依賴依賴
- 19. 依賴於ODP.NET
- 20. 依賴於Spacy
- 21. 依賴於FK
- 22. 依賴於「mysql_insert_id」
- 23. 依賴於JavaScript
- 24. 依賴於宏
- 25. 佈局API依賴?
- 26. 上依賴於一個布爾
- 27. WPF佈局依賴於數據
- 28. .Net Core 2.0發佈,依賴項丟失
- 29. SSDT發佈封鎖becasue TVP依賴
- 30. 重複發佈與去依賴包
我拉在唯一的外部資源是的#include「stdafx.h中」 的#include 的#include 的#include 但我的印象是,在發行模式,這將刪除所有需要外部資源和將完全在其內部運行。 –
通過不解釋你如何知道你對msvcp100d.dll有依賴關係,你並沒有幫助你或我們。你**在msvcp110.dll的Release版本中有一個依賴項,它包含了iostream的代碼。您需要將它與您的.exe,msvcr110.dll一起復制。或者只是使用/ MT生效,適用於不使用DLL的簡單程序。 –
你嘗試過使用Dependency Walker嗎? – makc