典型的C程序是这样的:

嵌入Mono Runtime后就变成了这样:Mono Runtime作为一个虚拟执行系统,扩大了地址空间。
Mono的embed相关API把Mono Runtime暴露给C代码。

Mono Runtime 初始化之后,就可以加载CIL或.NET可以识别的代码了(比如C#),像这样:

然后C代码就被称之为非托管代码,CIL编译器生成的CIL代码就叫托管代码。
托管代码调用非托管代码的方式有两种:
- P/Invoke
- 使用底层的Mono embed API
嵌入Mono Runtime 的流程如下:
- 编译和链接Mono Runtime
- 初始化Mono Runtime
- 选择性地把C代码暴露给CIL
具体参考: http://www.mono-project.com/docs/advanced/embedding/#embedding-the-runtime
本文深入探讨了如何将C程序嵌入MonoRuntime,包括初始化过程、加载CIL或.NET代码,以及托管代码与非托管代码之间的交互方式。

4841

被折叠的 条评论
为什么被折叠?



