我们有一个VS2010 C ++项目,其项目属性中设置了无公共语言运行时支持。然后我看到它有一个包含一些托管代码的源文件,该文件的属性有" / clr"国旗套。所以项目没有/ clr标志,但里面有一个文件。我很困惑它是否使项目成为混合模式?我可以在ILDisassembler中打开输出文件,这让我相信它确实是一个.NET程序集。
答案 0 :(得分:2)
这是完全正常的,C ++ / CLI项目通常包含本机C ++和C ++ / CLI源代码文件的混合。 “常规”设置页面中的设置仅设置编译器将采用的默认值。但是为每个单独的源文件打开它是非常有效和常见的。
执行此操作的其他方法是将本机C ++代码保存在单独的库项目中并将其链接。或者通过使用#pragma managed在一个源代码文件中即时打开和关闭MSIL代码生成。
链接器不必被告知它,它可以从目标文件的内容中分辨出来。是的,您将获得混合模式.NET程序集。将C ++ / CLI位编译为MSIL,将本机C ++代码编译为机器代码。