当前位置: 代码迷 >> VC >> C++调用.net的代码,如托管代码,编译结果是什么类型的东东?该如何处理
  详细解决方案

C++调用.net的代码,如托管代码,编译结果是什么类型的东东?该如何处理

热度:1180   发布时间:2013-02-25 00:00:00.0
C++调用.net的代码,如托管代码,编译结果是什么类型的东东?
普通C++编译得到2进制代码,可以由操作系统直接执行。
.net编译得到.net字节吗,运行时由.net编成本地代码执行。

那么C++里面调用.net的东西,他是被.net框架现在就编译成本地代码呢,还是嵌入了一个.net代码块,被调用时再交给.net框架? 这种代码编译出来到底是什么性质的一个东东?

谢谢

------解决方案--------------------------------------------------------
当你的c++调用.net的东西的时候,它编译成什么代码?你测试过没有安装.net framework时你的那种c++编译出来的程序还能运行了吗?

c++有好几种目标平台,不要把MFC的CLR的混为一谈。如果我们本来需要一个基于MFC开发人员,结果招来一个基于CLR的,这岂不是浪费了?!
------解决方案--------------------------------------------------------
那是混合代码

混合程序集能够同时包含非托管计算机指令和 MSIL 指令。这使它们可以调用 .NET 组件或被其调用,同时保留与完全非托管组件的兼容性。使用混合程序集,开发人员可以混合使用托管和非托管功能创作应用程序。这使得混合程序集成为将现有 C++ 应用程序迁移到 .NET 平台的理想选择。

例如,通过使用 /clr 编译器开关仅重新编译一个模块,就可将完全由非托管函数组成的现有应用程序迁移到 .NET 平台。然后,此模块就可以使用 .NET 功能,但是仍保留与应用程序的其余部分的兼容性。通过此种方式,应用程序可以按渐近、逐个部分的方式转换到 .NET 平台。甚至可以决定在同一文件内每个函数的基础上进行托管或非托管编译(请参见 managed, unmanaged)。

  相关解决方案