IL2CPP深入详解-总览

IL2CPP深入详解-总览导语该系列将会分为以下几个部分 1 总览 本文 2 c 代码解析 3 调试 c 代码 4 方法调用 一般方法 虚方法等 5 泛型共享 6 类型与方法的 P invoke 封装 7 垃圾回收 8 测试框架与使用什么是 IL2CPPI

大家好,欢迎来到IT知识分享网。

导语

什么是IL2CPP

IL2CPP 是 Unity 自 4.6.1p5版本 提出的一种新的 scripting backend 方式,为Unity提供了更加高效、更加便携的虚拟机,IL2CPP分为两个独立的部分:

  • AOT(静态编译)编译器
  • 运行时库

其中AOT编译器将 IL(由.Net编译器输出的中间语言)转换为C++源码,而运行时库则会提供诸如 垃圾回收、线程/文件获取(独立于平台,与平台无关)、内部调用直接修改托管数据结构的原生代码 的服务与抽象。

AOT编译器

所谓AOT编辑器即 il2cpp.exe
在 Windows 系统中你可以在 Editor\Data\il2cpp 目录中找到它,
在 OSX 系统中你可以在 Contents/Frameworks/il2cpp/build,即Unity的安装目录中找到它。
il2cpp.exe 是由C#编写的受托管的可执行程序,它接受我们在Unity中通过Mono编译器生成的托管程序集,并生成指定平台下的C++代码。


IL2CPP的工具链如下图所示:

IL2CPP深入详解-总览

il2cpp-toolchain

运行时库

IL2CPP技术的另一部分是运行时库(libil2cpp),它的存在是为了支持IL2CPP虚拟机的运行,运行时库几乎完全由C++代码编写,并作为一个静态库与最终的可执行程序链接。(值得一提的是,IL2CPP技术十分得益于使用了libil2cpp这一更轻便的运行时库)

你可以通过查看 libil2cpp 的头文件了解其的代码构成(Windows 系统下的目录为Editor\Data\PlaybackEngines\webglsupport\BuildTools\Libraries\libil2cpp\include,OSX 系统下的目录为 Contents/Frameworks/il2cpp/libil2cpp),例如你可以在 codegen/il2cpp-codegen.h 文件中看到 il2cpp.exe 生成C++代码的接口以及 运行时库 的接口。

运行时库的另一关键功能是提供了垃圾回收,这一块内容将在后续的文章里再详细探讨。

AOT编译器是如何运行的

  1.  
    using UnityEngine;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119737.html

(0)
上一篇 2025-11-03 13:20
下一篇 2025-11-03 13:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信