回答

3

如果你只是鏈接到它,你通常可以「使用」任何版本的Visual Studio的C++ DLL。

但是,當你編譯dll時,它將被定位到特定版本的C++運行時,因此程序的最終用戶需要在其PC上安裝該運行時(Visual C++可再發行組件包)。因此,如果您使用由VS2005構建的dll和由VS2010構建的exe,您的最終用戶將不得不同時安裝2005和2010可再發行組件包。如果你使用它們(MFC等),通常也會使用其他庫(如MFC等)。

如果你這樣做,你還必須小心內存分配 - 在一個運行時版本中分配的內存不能被另一個安全地釋放。所以你的dll分配的任何東西也必須由dll解除分配,並且由exe分配的任何東西都不能被dll解除分配。

因此,大多數人會用相同版本的VS重建DLL,因爲他們構建了其他程序,以最大限度地減少兼容性問題 - 最終在VS的每個版本中構建起來要比對不涉及所有涉及的問題。

(提示:你可以在命令行運行VS並得到它來建立一個項目/解決方案,所以它是有5分鐘的工作寫一個批處理腳本,將自動生成所有三種變體一氣呵成)

0

的Visual Studio中正在使用的版本不有所作爲,以給定的組件是否可以參考。

唯一重要的是程序集編譯的框架版本。假設它是一個.net程序集。

無論如何,通常的做法是提供針對每個框架rev(2.0,3.5和4.0)編譯的版本。

但是,如果你正在編譯一個非託管C++ dll;那麼只需提供該dll的32位和64位版本即可。在這種情況下,使用的.net版本(以及視覺工作室版本)並不重要。

相關問題