C#でもaviutl2のプラグインが作れる!Native AOTを添えて
BRANK
突如として現れたAviUtl ExEdit2(通称?aviutl2)、とても懐かしい気分でいっぱいですね!そんなaviutl2はaviutlと同様、Plugin機構が備わっています。このPlugin機構いつか触ってみたいと思っていたのですが、ちょうど良い機会なので挑戦してみようと思います。しかしサンプルとして提供されているのはC++!避け続けてきたので急にハードルが上がってしまいました。それでも作りたい、なにか方法はないかと頭を悩ませた結果ひとつの結論にたどり着きました。C# で書けば良いのだと。Native AOTという救世主「でもC#で書いたDLLをCのプラグインとして使えるの?」という疑問が浮かぶと思います。実は.NET 7(?)以降で提供されている Native AOT という機能を使うことで、C#コードを直接ネイティブコードにコンパイルできるようになりました。これにより、.NET Runtimeが不要で、Cで書いたプラグインと同じように動作するネイティブライブラリを作成できます。 ExEdit2のプラグインは、特定の関数をエクスポートするDLLとして実装されているようです。SDKの入力プラグインのサンプル実装である AviReader.cpp を確認してみた所、EXTERN_C している GetInputPluginTable 関…