错误C1190:托管目标代码需要'/ clr'选项

时间:2013-11-20 07:29:02

标签: c++ .net clr

已经发现了很多关于这个错误,但是我的情况还没有与之相匹配。

我正在以调试模式构建一个解决方案(有很多项目),其中一个是抛出这个错误,我使用的是VS2010,语言是C ++,。net 4.0版,之前这个项目是在vs2008中编译的,然后是VS2010 ,一切都好,现在我买了一台安装了VS2010的新机器,现在面临这个错误。

需要注意的主要事项是:
属性设置:

  1. 项目配置 - > General-> / CLR被选择为
  2. 在C ++中 - > General->没有CLR支持
  3. 自从过去以来我一直在使用这些设置,只有在相同的调试模式下,它才能在VS2010的旧机器中运行良好。

    怎么办?

3 个答案:

答案 0 :(得分:1)

我正在使用Visual Studio 2013。

我有一个非常简单的C程序的类似症状。在项目属性中,我将General / Platform-Toolset设置从“Visual Studio 2010”更改为“Visual Studio 2013 v120”,并为我解除了此错误。

答案 1 :(得分:0)

如错误所示,预编译头与/clr编译文件不兼容。

您可以为使用cpp或整个项目(/clr - > C/C++ - > {{1}编译的Precompiled Headers文件停用预编译标头}:Precompiled Header)。我不确定区别是什么,但两者似乎对我有用。

答案 2 :(得分:0)

Doc并非完全错误,但我打赌这不是在这里发生的事情。

你有没有像这样的东西:

#using namespace boost::asio;

...而不是像这样的东西?

using namespace boost::asio;

两者"使用"和"#使用"在Visual Studio中有有效的角色 - 但如果你的意思是纯C ++语言关键字,请确保你使用的是前者!后者确实用于托管代码。见这里:

https://msdn.microsoft.com/en-us/library/yab9swk4.aspx

在Visual Studio 2015中出错会产生以下影响:

构建输出: 1> thingy.cpp(3):错误C2006:'#使用':预期文件名,找到'命名空间' 1> thingy.cpp(3):致命错误C1190:托管目标代码需要' / clr'选项

请注意,尝试"满足"通过删除"名称空间"关键字和引用该值只会导致第二个错误。

(我认为值得一提,因为随着Visual Studio和C ++语言规范的不断变化,人们尝试了他们知道不应该工作的各种语法,如果它突然编译,只是假设规范或工具已经以某种方式改变了他们没有时间跟上 - 特别是如果错误信息似乎与"功能有关"他们无法&#39 ;不要太在意,也不要使用。)