如何启用VS2013 c ++编译器功能?

时间:2015-07-30 12:57:20

标签: c++ visual-studio-2010 visual-studio c++11

所以我在这里很难过。我有一个用“VS2013”​​用C ++编写的库“A”,可以在项目“X”中成功包含和构建它。

项目“X”是在VS2013中开发的MFC应用程序,其Platform Toolset值设置为VS2013。它恰好是一个Win32应用程序。

我现在必须将该库包含在一个不同的项目“Y”中(这是一个VS2010项目,但我(相信我)使用VS将其转换为2013年。)

项目“Y”不是MFC应用程序,而是.dll,其Platform Toolset值也设置为VS2013。它是一个x64应用程序。

然而,当我尝试构建“Y”时,我得到了大量的编译器错误,主要是因为该库使用了C ++ 11的功能,显然VS并不允许它。错误主要是向量括号初始化语法问题。例如。 non-aggregates cannot be initialized with initializer list。但此外,它也找不到strtollreport_rangecheckfailure的符号。

但我不明白。据我所知,VS2013应该支持这些功能,它似乎在我的其他项目中。这可能是什么问题?使用2013编译器还需要做些什么吗?

修改 只是为了更清楚,这样的赋值给出了聚合编译器消息:

std::vector<std::string> paramVector = { "username", "time", "hours", "udata" };

2 个答案:

答案 0 :(得分:3)

  

它也找不到strtoll和report_rangecheckfailure的符号

对于潜在问题的最强提示,那些将是链接器错误。因此,一个显而易见的事实很明显:您没有链接VS2013 C运行时库。这些符号存在于C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ libmsvcrt.lib和libcmt.lib中,但不存在于早期版本中,如VS2010版本。

从那里开始,它只是一个非常短的内容来解释“非聚合不能用初始化列表初始化”错误。显然,您也没有包含相应的VS2013 <vector>包含文件。获取要编译的向量分配所必需的。再一次,包括它的VS2010版本解释了这个错误。

坚如磐石的事实:你的Y项目配置不正确。

错误两者编译器和链接器确实指向工具集目标设置,即使您认为它是正确的。标准错误是更改调试配置的设置,但忘记也为Release配置执行此操作。项目&gt;属性&gt; VC ++目录设置错误将是另一种方式。编译器的/ showIncludes和链接器的/详细选项为您提供足够的反馈来验证您的假设。如果你绝对绝望,那么重新创建Y项目。

答案 1 :(得分:0)

可能的原因之一是VS2013部分支持C ++ 11,请参阅此表了解详细信息https://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx

无论如何,最好先展示一下你到目前为止所犯错误的一个例子。