指針)
適合階段:進(jìn)階 / 深入適合讀者:已經(jīng)會(huì)用mono_add_internal_call,想弄清楚底層發(fā)生了什么,以及想設(shè)計(jì)一套可維護(hù)的引擎綁定層的客戶端、引擎程序員說明:運(yùn)行時(shí)內(nèi)部實(shí)現(xiàn)以 Mono 主線源碼為參照(metadata/icall.c、metadata/marshal.c、mini/mini-runtime.c、mini/method-to-ir.c)。內(nèi)部函數(shù)名、細(xì)節(jié)隨版本變化,理解流程即可,不要依賴具體實(shí)現(xiàn)“大廠實(shí)踐”部分以公開資料為依據(jù):Unity 的 C# 參考源碼(UnityCsReference)、IL2CPP 生成代碼、Godot 3.x 的 Mono 模塊等,不涉及任何未公開的內(nèi)部實(shí)現(xiàn)一、ICall 在整個(gè)互操作體系里的位置C# 調(diào)用原生代碼有三條路:方式聲明方式誰負(fù)責(zé)找到函數(shù)參數(shù)轉(zhuǎn)換誰能用InternalCall