【问题标题】:C++ code compiled under VS2013 fails to compile under VS2015VS2013下编译的C++代码在VS2015下编译失败
【发布时间】:2017-12-20 04:12:26
【问题描述】:

将大型项目从 VS2013 (Win7) 移动到 VS2015 (Win10)。该项目的 95% 是 VB .NET,我精通它,并且可以毫无问题地进行转换。

不幸的是,有两个小的 C++ 模块,当我尝试编译时返回大量错误,这些错误似乎是语法错误:

'std::array': too few template arguments<br>
'^':cannot use this indirection on type 'std:array'<br>
left of '->Length' must point to class/struct/union/generic type    

编写原始代码的 C++ 程序员声称 C++ 从 VS2013 到 VS2015 发生了巨大变化。我不是 C++ 人,所以我无法真正回应。他很忙,对更新 C++ 部分不太感兴趣,建议我们使用带 Win10 的 VS2013,但我宁愿至少使用 2015 年,如果不是 2017 年,以获得更长的使用寿命。

任何 C++ 人都可以对此做出回应吗?我觉得这个问题可能出在编译器设置中,但我不确定在哪里查看。

【问题讨论】:

  • 如果没有可重现的代码就无法回答,否则这将成为一次钓鱼探险
  • "...'^':cannot use thisindirection on type 'std:array'..." 可能表明原始项目是 C++CLI (dotNET ) 不是纯 C++
  • 什么是“C++ prog”?您的意思是“C++ 程序员”吗?无论如何,他错了。从 VS2013 到 VS2015,C++ 没有显着变化,Visual C++ 也没有。语言的巨大变化是从 C++03 到 C++11。但更糟糕的是:您的问题显然与 C++ 语言更改无关,因为您的问题听起来好像您从未使用过 C++,而是一种名为“C++/CLI”的科学怪人语言,它(曾经)松散地基于C++。
  • 非常感谢理查德。看起来您可能已经很快发现了问题。从快速检查来看,dotNet 和纯 C++ 版本似乎存在许多差异。给了我一些追求。再次感谢所有回复的人。

标签: visual-studio-2015 c++-cli


【解决方案1】:

如上所述,我不是 C++ 程序员,但稍微用谷歌搜索一下就明白了。托管阵列和标准阵列不兼容。添加

#include stdafx.h
#include <array> 

到两个模块并将数组声明更改为 cli::array 就可以了 - 没有编译器错误并且从 VB Net 调用 C++ dll 返回与早期 VS 2013 版本相同的结果。

再次感谢回复的人。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 2022-01-21
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    相关资源
    最近更新 更多