【发布时间】:2015-08-03 20:43:18
【问题描述】:
我最近安装了 VS2015。耶! \o/
但是,我的一个 C++/CLI 项目在从 VS2013 升级时显示此消息:
以下项目使用较早版本的 Visual C++ 编译器和库。项目将升级为使用 Microsoft Visual Studio 2015 编译器和库。 任何使用 C++/CLI 扩展的托管或本机代码项目都将自动升级到目标 .NET Framework 4.5.2。 注意:如果您不升级项目,则构建您的项目(s) 将需要安装相应版本的 Visual Studio。
我接受了警告,但现在之前在 VS2013 中编译的代码不再编译,例如:
void WritePixels(array<unsigned int> ^ rgbaData);
有错误
'std::array': 模板参数太少
'^': 不能在类型 'std::array' 上使用这种间接寻址
此外,项目属性不允许我切换目标 .NET 框架版本(它是灰色的)。
C++/CLI 项目是否可以使用 Visual Studio 2015 以 .NET 4.0 为目标?自 Visual Studio 2013 以来,C++/CLI 中是否有任何我需要了解的语法更改?
【问题讨论】:
-
你知道
using namespace std;不好,是吗? :-) -
Microsoft 不希望支持 C++/CLI 项目的多目标。有一些非常丑陋的极端情况,编译器会使用错误的引用程序集,#using 指令是个问题。它是否在你的手中是不可能的。您可以手动编辑 .vcxproj 文件并更改
<TargetFrameworkVersion>。但这与编译错误无关,您在某处有一个#include <array>和一个using namespace std;。当然,非常可修复,如有必要,请输入cli::array以消除歧义。 -
感谢您的 cmets,我将再次检查 vcxproj,看看我们能做什么!现在,恢复到 VS2013,这是一种耻辱,因为 2015 非常闪亮!
-
我认为我遇到了多种错误。一个是 SVN 错误,它错过了一些 C++ 文件,这意味着无法编译。其次是,是的,我有一个 using namespace std;傻我 :) 第三个是 C++/CLI 项目中的平台目标——仍在研究那个。如果我能解决所有问题,我们将使用 2015 年。感谢您的帮助! :)
-
我已经基于 .NET 4.0 的 VS 2015 构建了一个大型 C++/CLI 代码库。这一切似乎都很好。 .NET 3.5 似乎可以构建,但随后会出现模糊的链接错误。我曾尝试向 MS 询问此问题,这里 social.msdn.microsoft.com/Forums/en-US/… 是一个例子,但他们似乎并不热衷!
标签: c++-cli visual-studio-2015