将 IL2CPP 与 macOS 结合使用
Describes the use of plug-ins for macOS applications using IL2CPP.
阅读时间2 分钟最后更新于 1 个月前
描述了在利用“中间语言转 C++” 技术(路径为./scripting-backends-il2cpp)的 macOS 应用程序中,插件的使用方法。
IL2CPP 是一种完全受支持的脚本后端,可在为 macOS 播放器构建项目时替代 Mono。
使用 IL2CPP 构建项目时,Unity 会先将脚本和程序集的中间语言 (IL) 代码转换为 C++ 代码,然后再创建原生二进制文件。请参阅 IL2CPP 以了解更多信息。
适用于 IL2CPP 的 C++ 源代码插件
使用 IL2CPP 脚本后端时,可将 C++ (.cpp) 代码文件直接添加到 Unity 项目中。这些 C++ 文件在检视面板中起到插件的作用。如果将 C++ 文件配置为与 macOS 播放器兼容,则 Unity 会将这些文件与从托管程序集生成的 C++ 代码一起编译。请参阅导入和配置插件以了解有关插件配置的更多信息。
生成的 C++ 代码将函数链接在一起,因此不需要单独的动态链接库 (DLL)。不使用 DLL 名称,而是借助 关键字让 C++ 链接器负责解析函数,而不是在运行时加载函数。例如:
"__Internal"[DllImport("__Internal")]private static extern intCountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);
可在 NativeFunctions.cpp 中定义此类函数,如下所示:
extern "C" __declspec(dllexport) int __stdcall CountLettersInString(wchar_t* str){ int length = 0; while (*str++ != nullptr) length++; return length;}
当链接器解析函数调用时,托管端函数声明出现错误,将引发链接器错误,而非运行时错误。这表明运行过程中无需动态加载,函数能直接从 C# 调用。这种方式会显著降低 调用的性能开销。
P/Invoke