簡體   English   中英

使用Visual Studio 2012並使用較舊的平台工具集進行編譯?

[英]Use Visual Studio 2012 and compile with older platform toolset?

問題

我正在使用Visual Studio 2012來開發C ++ DLL。 在某些機器上,無法加載這些DLL,因為缺少設置為“v110”的平台工具集。

我試圖安裝較舊的c ++運行時。 它們沒有安裝,因為“已經安裝了一個較新的版本”。 我還安裝了當前的Windows SDK,但仍然沒有其他項目可供選擇而不是v110。

如何使用舊版本的C ++運行時編譯我的C ++ DLL,以便它可以在非開發人員的機器上運行?

平台工具集是v110

根據MSDN上的此頁面 ,您需要具有相應版本的Visual Studio(2008或2010),或者“Platform Toolset”的相關Windows SDK下拉列表以列出這些版本:

要更改目標平台工具集,必須安裝相關版本的Visual Studio或Windows Platform SDK。

您還似乎在“Platform Toolset”之間有點混淆,它控制着哪個編譯器/鏈接器/等。 用於構建應用程序,以及運行應用程序所需的“Visual C ++ Redistributable”。 您不能在用戶的PC上安裝“Platform Toolset”,也不能通過在開發PC上安裝特定的“Visual C ++ Redistributable”來使用它。

另外,據我所知,Visual C ++ Redistributable不包含MFC運行時。 它們可作為單獨的MSI合並模塊(MSM)使用。

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

顯然,使用靜態鏈接是一個不錯的選擇。 它並不總是對我有用,但對於我的一個較小的項目,它的效果非常好。 結果是除了kernel32.dll之外沒有依賴關系的DLL。

只需使用/MT進行發布配置和/MTd進行調試,你就可以了。

這里的問題是像我這樣的開發人員在發布后不久就獲得了當前的Visual Studio版本,但是你真的不能指望普通用戶安裝只有幾周的運行時版本。 並且安裝不同版本的Visual Studio只是為了使用舊的運行時絕對不是你想要的。

Visual Studio 2013中的靜態鏈接

互聯網檔案的提示。 (我不能評論上面的陳述,我不知道為什么)

要在較新的Visual Studio(I testet 2013和2015)中使用v90平台工具集(= Visual Studio 2008) ,您需要安裝Visual Studio 2008和Visual Studio 2010,因為MS Build程序文件夾中的vs90平台工具集定義是部分von Visual Studio 2010。

適用於v90和v100的C:\\Program Files (x86)\\MSBuild\\Microsoft.Cpp\\v4.0\\Platforms\\x64\\PlatformToolsets

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相同。

這取決於你想要建立什么。 通過安裝Windows SDK 7.1可能支持某些功能。 看到這篇文章,同樣的問題 ,但如果你的項目依賴於MFC,那么不幸的是它看起來根本不可能,主要是因為VS2010正在部署MFC庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM