2013-03-16 117 views
30

問題使用Visual Studio 2012並使用舊版平臺工具集進行編譯?

我正在使用Visual Studio 2012開發C++ DLL。在某些機器上,這些DLL無法加載,因爲設置爲「v110」的平臺工具集丟失。

我試圖安裝較舊的C++運行時。他們沒有安裝,因爲「已經安裝了更新的版本」。我還安裝了當前的Windows SDK,但仍然沒有其他項目可以從v110中進行選擇。

問題

我如何編譯我的C++與舊版本的C++運行時的DLL所以它會在非開發機器上運行?

Platform toolset is v110

+0

您是否曾嘗試在這些非開發人員計算機上安裝[Visual C++ Redistributable for VS 2012](http://www.microsoft.com/en-us/download/details.aspx?id=30679),然後查看是否有用? – 2013-03-16 19:26:44

+10

是的,這是有效的。但不是強迫用戶安裝運行時,我更願意使用這些運行時的舊版本,這樣我的應用程序就可以在目標機器上運行。如何在屬性窗口中選擇較舊版本的「平臺工具集」? – bytecode77 2013-03-16 19:36:24

+1

你需要安裝舊的visual studio – 2013-03-16 20:11:44

回答

23

this page on MSDN,你需要的Visual Studio(2008或2010)的相應版本,或有關Windows SDK的「平臺工具集」下拉菜單,列出那些版本:

要改變目標平臺工具集,則必須安裝Visual Studio或Windows Platform SDK的關聯版本。

「平臺工具集」,它控制哪些編譯器/鏈接器/等,似乎有點混淆。用於構建您的應用程序和「Visual C++ Redistributable」,這是您需要的運行您的應用程序。您無法在用戶的PC上安裝「平臺工具集」,也無法在開發PC上安裝特定的「Visual C++可再發行程序」。

此外,據我所知,Visual C++ Redistributable不包括MFC運行時。它們可作爲單獨的MSI合併模塊(MSM)提供。

+0

我已安裝Windows SDK,但仍無法選擇不同的運行時。 – bytecode77 2013-03-16 20:32:07

+1

然後,您可能還需要安裝Visual Studio 2008或2010,不幸的是... – 2013-03-16 21:11:12

1

以及這取決於你正在試圖建立。有些東西可能通過安裝Windows SDK 7.1來支持。 see this post, same question, 但是如果你的項目依賴於MFC,那麼不幸的是它看起來好像根本不可能,主要是因爲除了VS2010,其他的都是部署MFC庫。

+0

正如我所說的,我確實嘗試安裝Windows SDK,但我仍然無法選擇較舊的運行時版本。另外,我沒有使用MFC。該DLL只包含一個函數並使用一對標準的包含文件。 – bytecode77 2013-03-16 20:06:20

+0

請閱讀本主題,他們能夠在VS2012中使用SDK7.1工具集,但在編譯代碼時遇到錯誤 – 4pie0 2013-03-16 20:08:07

7

我想分享一些我遇到的信息,並想出如何將它們用於我的目的。

顯然這是一個很好的選擇,使用靜態鏈接。它並不總是爲我工作,但對於我的一個小型項目來說,它工作的很好。並且結果是除kernel32.dll等之外沒有依賴關係的DLL。

只需使用/MT進行發佈配置,使用/MTd進行調試即可,無需擔心。

這裏的問題是,像我這樣的開發人員在發佈後不久就會獲得當前的Visual Studio版本,但是您不能真正期望普通用戶安裝只有幾周的運行時。安裝不同版本的Visual Studio只是爲了使用舊的運行時,絕對不是你想要的。

Static linking in Visual Studio 2013

+3

不幸的是,如果您使用託管代碼(/ clr標誌),這不是一個選項。編譯產生這樣的信息:'命令行錯誤D8016:'/ clr'和'/ MT'命令行選項不兼容。這裏有一個討論原因:http://www.windows-tech.info/17/5f0fd2024b850de5.php – Rast 2015-02-16 11:55:44

1

一種互聯網檔案館提示。 (我無法評論上面的語句,我不知道爲什麼)

要使用V90平臺工具集(= Visual Studio 2008中)在一個新的Visual Studio(我testet 2013年和2015年),你需要安裝Visual Studio 2008和另外Visual Studio 2010中,因爲在MS的vs90平臺工具集的定義生成程序的文件夾是一部分馮Visual Studio 2010中

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets爲V90和V100

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0 

爲V110 V120 V140和

代表Visual Studio版本:v90 = 2008,v100 = 2010,V110 = 2012,V120 = 2013,V140 = 2015。

安裝vob VS2010之後,較新的Visual Studio 2013和2015版本可以使用vs90和vs100平臺工具集。 (這個工作不需要Visual Studio 2013/2015的全新安裝。)我想Visual Studio 2012就像VS2013和VS2015一樣。

相關問題