错误 C1190:托管目标代码需要'/clr'选项
error C1190: managed targeted code requires a '/clr' option
已经发现了很多关于这个错误的信息,但我的案例还没有得到任何匹配。
我正在调试模式下构建一个解决方案(有很多项目),其中一个项目抛出了这个错误,我使用的是VS2010,语言是C++,.net版本4.0,以前这个项目是在vs2008和VS2010中编译的,一切都很好,现在我有一台新机器,它刚刚安装了VS2010,现在面临这个错误。
需要注意的主要事项是:
属性设置:
- 选择项目配置->常规->/CLR
- 在C++中->常规->不支持CLR
我从过去就有了这些设置,它在VS2010的旧机器上运行得很好,只是在相同的调试模式下。
该怎么办?
我使用的是Visual Studio 2013。
我在一个非常简单的C程序中也有类似的症状。在项目属性中,我将通用/平台工具集设置从"Visual Studio 2010"更改为"Visual Studio 2013 v120",这为我消除了这个错误
如错误所示,预编译的头文件与/clr
编译的文件不兼容。
您可以禁用使用/clr
编译的cpp
文件或整个项目(C/C++
->Precompiled Headers
->Precompiled Header
:Not Using Precompiled Headers
)的预编译头。我不确定有什么区别,但两者似乎都对我有效。
Doc并没有完全错,但我敢打赌这不是这里发生的事情。
你有这样的东西吗:
#using namespace boost::asio;
而不是像这样的东西?
using namespace boost::asio;
"using"answers"#using"在Visual Studio中都有有效的角色,但如果您指的是纯C++语言关键字,请确保您使用的是前者!后者确实用于托管代码。请参阅此处:
https://msdn.microsoft.com/en-us/library/yab9swk4.aspx
在Visual Studio 2015中出错会产生以下影响:
生成输出:1> thingy.cpp(3):错误C2006:"#using":应为文件名,找到的是"namespace"1> thingy.cpp(3):致命错误C1190:托管目标代码需要"/clr"选项
请注意,试图通过删除"namespace"关键字并引用该值来"满足"这一点,只会导致第二个错误。
(我认为这一点值得一提,因为随着Visual Studio和C++语言规范的不断变化,人们会尝试各种他们知道不应该工作的语法,如果它突然编译,就假设规范或工具在某种程度上发生了变化,他们没有时间跟上——尤其是如果错误消息似乎与"功能"有关他们毫不在乎,也不使用。)
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- C3193:__clrcall 需要提升标头上的 /clr 或 /ZW 命令行选项
- 即使关闭CLR选项,"cannot compile C file <file> with /clr option"也收到错误D8045
- 错误 C1190:托管目标代码需要'/clr'选项
- C++编译器问题:3>cl:命令行错误 D8016:'/clr'和'/arch:SSE2'命令行选项不兼容
- coinitializessecurity禁用clr选项失败
- 构建没有/clr选项的dll
- 无法使用/ CLR选项从Visual c++项目加载CLR
- 使用/clr选项编译C代码