No_CLR_Support 带有 C++/CLI 源文件的 C++ 项目

No_CLR_Support C++ project with a C++/CLI source file

我们有一个 VS2010 C++ 项目,在其项目属性中设置了无公共语言运行时支持。然后我看到它有一个包含一些托管代码的源文件,并且该文件的属性设置了“/clr”标志。所以该项目没有 /clr 标志,但其中有一个文件。我对它是否使项目成为混合模式感到困惑?我可以在 ILDisassembler 中打开输出文件,这让我相信它确实是一个 .NET 程序集。

这是完全正常的,C++/CLI 项目通常包含本机 C++ 和 C++/CLI 源代码文件的混合。常规设置页面中的设置仅设置编译器将采用的默认值。但是为每个单独的源文件打开它是非常有效和常见的。

执行此操作的其他方法是将本机 C++ 代码保存在单独的库项目中 link。或者通过使用 #pragma managed 在单个源代码文件中即时打开和关闭 MSIL 代码生成。

linker就不用讲了,从object文件的内容就可以知道了。是的,您将获得一个混合模式的 .NET 程序集。将 C++/CLI 位编译为 MSIL,并将本机 C++ 代码编译为机器代码。