【问题标题】:Is it possible to target .NET4.0 in Visual Studio 2015 C++/CLI projects?是否可以在 Visual Studio 2015 C++/CLI 项目中以 .NET4.0 为目标?
【发布时间】: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 文件并更改 &lt;TargetFrameworkVersion&gt;。但这与编译错误无关,您在某处有一个#include &lt;array&gt; 和一个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


【解决方案1】:

只是为了后代的更新。

我通过变通方法解决了这个问题,根本不使用 C++/CLI,而是使用了惊人的、适应性强的 SWIG Platform Invoke Generator 库。

没有 C++/CLI = .NET Framework 版本没有问题,x64/86 位和 .NET Any CPU 没有问题。

问题解决了……

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 2015-05-29
    • 1970-01-01
    • 2020-12-25
    • 2016-10-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多