2014-01-10 73 views
2

如何刪除msvc dll(例如:msvcr100.dll)依賴運行qt應用程序? 我開發了一個qt應用程序,它在dveloper機器上運行得很好,但無法在任何其他機器上運行,因此出現錯誤消息「程序無法啓動,因爲您的計算機上缺少MSVCR100.dll」。我可以通過在應用程序文件夾中複製該文件來解決此錯誤,但我不想複製,而是希望鏈接靜態或其他方式來刪除該依賴項。刪除msvc dll依賴運行qt應用程序

在此先感謝

+0

你有沒有找到你要找的答案? – lpapp

+0

是的只有從這個論壇的兩個答案.. http://blog.diplix.de/2011/08/23/qt-with-visual-studio-2010-and-static-linking/顯示如何靜態鏈接可能解決。 – Wagmare

回答

3

的問題是,你可能想運行的已安裝的則是用於構建應用程序本身的版本不同的Visual Studio(MSVC)版本的計算機上的應用程序。

通常,正確的解決方案是在目標機器上安裝相應的Visual Studio可再發行組件包。它不是「解決方法」或「破解」,因爲如果您希望使用由不同的運行時庫等構建的應用程序,那麼它是預期的。在這裏,你可以閱讀更多的關於它:

Redistributing Visual C++ Files

是的,這是有點可惜,顯然MS還沒有設法使其成爲最理想的,但畢竟,這是很簡單的規避。請注意,目標機器不僅會在您的應用程序中遇到問題,而且會以類似的方式分發。

解決該問題的另一種方法是使用與目標機器上安裝的環境相同的環境構建應用程序,但如果需要使用多功能設置將應用程序提供給多臺機器,則這可能很容易失靈。現在,我想說這是「黑客」的做法。

您需要從這裏搶再發行的這個特殊的問題:

Microsoft Visual C++ 2010 Redistributable Package (x86)

Microsoft Visual C++ 2010 Redistributable Package (x64)

即使你下樓的靜態黑客這個局面在某種程度上,你需要處理在使用DLL和靜態庫等應用程序時產生令人討厭的後果。

2

據我所知,無法靜態鏈接到Visual Studio Redistributable 。任何使用Visual Studio編譯器構建的應用程序都需要運行相應的msvcXXX.dll。包含所有特定版本MSVC的所有dll的安裝程序可在此處獲得:http://search.microsoft.com/en-us/DownloadResults.aspx?q=redistributable

如果您希望在分發應用程序時避免用戶錯誤,那麼您有一些解決方案。通常使用的是在用戶機器上安裝應用程序之前安裝正確的可再發行組件包。通常使用的工具(NSIS,Inno Setup等)可以選擇在過程中運行其他可執行文件。並且每個Microsoft redist包都可以靜默運行(沒有任何窗口顯示給用戶)。

注意:這個問題是絕對不相關的qt。它直接來自您選擇的編譯器。