2013-08-31 26 views
-1

這是什麼?什麼是MSVCR DLL的處理?

爲什麼他們的各種版本呢?什麼是可用的版本,它們每個都匹配什麼?

爲什麼它似乎會導致許可證問題? E.G:我有些工具比如py2exe不能捆綁它們,但你仍然需要它們來運行結果exe。

如何解決,如果你要分發的Windows軟件:

  • 技術上:如何確保用戶有一個?如果不是如何提供一個?適用於所有版本的Windows。
  • 合法:自由軟件的工作原理是否相同?對於盈利軟件?有什麼具體的事情要做嗎?
+1

您需要閱讀Microsoft的許可和文檔以瞭解重新分配參數。 – bmargulies

+0

這就像回答「閱讀文檔」或「谷歌它」,這是不歡迎的SO。 –

+0

法律問題在這裏是題外話,所以評論是最好的你可以期待。 – bmargulies

回答

4

這是Windows可執行文件使用的C運行庫。它們是用C或C++編寫的,因此它們像C或C++程序一樣具有C運行時要求。

這是一個私人DLL,通過Windows可執行文件使用只有。你不能分發或覆蓋它,這將是一個災難性的。 DLL受Windows文件系統保護功能的保護,覆蓋它將使它自動恢復文件。

你不應該承擔它的依賴性,微軟沒有義務,以保持它的Windows版本之間的兼容。然而,這並沒有減慢MinGW項目,他們仍然使用它。或者,如果您使用的是舊版本的Visual Studio,並且它的CRT也使用了該名稱,那麼這可能會成爲問題,這是15年前版本6的問題。YMMV如果您最終依賴於該版本。

+0

如果我想分發一個py2exe捆綁軟件,我確實對它有依賴性。 –

+0

你沒有。它在[tutorial](http://www.py2exe.org/index.cgi/Tutorial#Step5)中相當明確,您對msvcr71.dll或msvcr90.dll有依賴性。這些是不同的版本,不一樣msvcrt.dll –

+0

好的,我得到了錯誤的部分。我的問題確實是回合msvcr。我不知道他們也是msvcrt。我的錯。 –

0

這是Microsoft Visual C++運行。它們匹配編譯器版本。

您可以靜態鏈接它,從而消除依賴關係。你的安裝可以檢測你的用戶是否需要它。

+0

不是我的投票,但沒有MS最近刪除靜態選項?我記得,從vs2010開始,沒有更多/ mt/ml,只有/ md/mdd,所以沒有靜態鏈接。 – bmargulies

+0

@bmargulies你的問題不清楚。 –

+0

@bmargulies它存在。 http://msdn.microsoft.com/en-us/library/abx4dbyh(v=vs.100).aspx –