# 调用并实现原生 UWP 插件

> Understand how to call and implement native plug-ins.

要调用并实现原生通用 Windows 平台 (UWP) 插件，您需要了解如何为 Unity 创建原生插件。有关原生插件及其用途的更多信息，请参阅[原生插件](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native.md)。

IL2CPP 脚本后端支持用于原生插件的 P/Invoke 机制。这意味着可以直接从 C# 代码中调用原生插件。为此，请指定原生函数原型，然后调用它。

以下示例展示了如何实现原生插件并从 C# 脚本调用它。

1. 在 Unity 项目中创建一个新的 .cpp 文件，并插入以下原生插件代码：

   ```
       extern "C" __declspec(dllexport)
       int __stdcall CountLettersInString(wchar_t* str)
       {
           int length = 0;
           while (*str++ != nullptr)
               length++;
           return length;
       }
   ```

2. 创建一个新的 C# 脚本并将其内容替换为以下代码：

   ```
   [DllImport("MyPlugin.dll")]
       private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);

       private void Start()
       {
           Debug.Log(CountLettersInString("Hello, native plug-in!"));
       }
   ```

3. 将该组件添加到场景中的游戏对象并进入运行模式。控制台将打印 22。

   ```
   using UnityEngine;
   public class ExamplePlugin : MonoBehaviour
   {
       [DllImport("MyPlugin.dll")]
       private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);

       private void Start()
       {
           Debug.Log(CountLettersInString("Hello, native plug-in!"));
       }
   }
   ```

## 其他资源##additional-resources

* [原生插件](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/native.md)
* [导入和配置插件](/engine/6000.0/manual/scripting/compilation-and-code-reload/plug-ins/plug-in-inspector.md)
* [使用 P/invoke](/engine/6000.0/manual/platform-specific/windows-store/uwp-developing/uwp-il2cpp-scripting/uwp-il2cpp-plugins/uwp-pinvoke.md)
