用途:为从 .NET 调用原生 C/C++ 库提供 P/Invoke 声明、数据类型封送、跨平台库路径解析与回调模式的一般性指导。
主要能力:首选 [LibraryImport](.NET 7+,编译期源生成封送,AOT 兼容),备选 [DllImport](旧版);结构体封送(LayoutKind.Sequential/Explicit、Pack);字符串封送(Utf8/Utf16 及逐参数 MarshalAs);使用 [UnmanagedCallersOnly] 的非托管函数指针回调与委托回调;NativeLibrary API 与 SetDllImportResolver 跨平台加载;SafeHandle 管理原生资源生命周期;C/C++ 与 .NET 固定宽度及平台相关类型映射(含 CLong/CULong)。
使用方式:[LibraryImport] 要求方法为 partial 类中的 static partial;字符串需显式指定 StringMarshalling 或 [MarshalAs];bool 返回须加 [return: MarshalAs(UnmanagedType.Bool)];Span/ReadOnlySpan 参数受支持,[DllImport] 不支持。库名与扩展名因平台而异,可用 NativeLibrary.SetDllImportResolver 在启动时注册解析器按操作系统加载不同文件。
平台注意:Windows 用 .dll;macOS 用 .dylib;Linux 用 .so;iOS 不允许运行时动态加载,需静态链接并以 __Internal 作为库名;Android 从 APK 的 lib/<abi>/ 加载 .so;WASM 不支持传统 P/Invoke。
限制与边界:本技能不含 COM 互操作、CsWin32 源生成器、Android JNI 及 WASM 的 [JSImport]/[JSExport];版本假设 [LibraryImport] 基线为 .NET 7.0+,[DllImport] 适用于所有 .NET 版本,NativeLibrary API 自 .NET Core 3.0 起可用。