ネイティブプラグイン
UtataneはPlugins/<plugin>/descript.txtを読み、filenameの実体と同じフォルダにあるSHIORI設定から実行方式を選びます。YAYA、AKARI、里々、華和梨、MISAKAで作られたプラグインは、対応する同梱または導入済みのdylibを使用します。Windows用DLLをmacOSへ直接ロードすることはありません。
Windows版とmacOS版を同梱する場合は、SSP向けのfilenameを残して、Utatane向けのfilename.macosを追加できます。
filename,plugin.dllfilename.macos,libplugin.dylib空でないfilename.macosは、辞書からのSHIORI自動判定より優先されます。指定したファイルがない、または読み込めない場合もfilenameへ黙って戻らないため、配布前にmacOS版の同梱を確認してください。filename.macosはUtatane独自の項目です。
macOS dylib ABI
Section titled “macOS dylib ABI”選択されたfilenameまたはfilename.macosが.dylib、.so、.bundleの場合は、まず一般的な伺かモジュールと同じexport名を探します。既存のオープンソースプラグインは、Windows固有処理とメモリ受け渡し部分だけを移植し、プラグイン本体のイベント処理を保ったままmacOS用cdylibとしてビルドできます。
#include <stdint.h>
int32_t loadu(void *plugin_directory, int32_t directory_length); /* または load */int32_t unload(void);void *request(void *request_message, int32_t *message_length);loaduではUTF-8、loadではプラグインのcharsetを前提にします。現状のUtataneはmacOSモジュールとのやり取りをUTF-8で行うため、loaduを推奨します。入力バッファの所有権は呼び出し時にモジュールへ移り、requestが返すバッファはUtataneがコピー後にmacOSのfreeで解放します。長さにNULは含めません。
Windows DLL
Section titled “Windows DLL”対応するdylibを見つけられず、選択されたfilenameまたはfilename.macosが.dllの場合だけ、汎用Windows DLLホストへ接続します。実行に必要なのはWine、utatane-dll-host.exe、対象プラグインDLLです。場所はUTATANE_WINE_EXECUTABLE、UTATANE_WINE_PREFIX、UTATANE_WINDOWS_DLL_HOSTで指定できます。Debugビルドではホストの既定位置としてContent/Local/WindowsDLLBridge/utatane-dll-host.exeも参照します。
この経路はWindowsプラグイン一般の互換性を保証しません。外部EXE、COM、独自UIなどへ依存するプラグインは動作しない場合があります。また、Wineの初回設定が完了するまで起動に時間がかかることがあります。