1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AviUtlプラグインのサンプルをビルドする

Posted at

はじめに

先日AviUtlのプラグインを作ろうとして、C++ド素人だったためにAviUtl Plugin SDKのサンプルのビルドにすら苦労したので備忘録的に手順を書き記しておきます。

この記事では、連番BMP画像での出力オプションを追加する出力プラグイン bmp_output のサンプルをビルドします。

準備

プラグインSDKの入手

今回は練習としてサンプルをビルドしたいので、まずAviUtlのお部屋のダウンロードから aviutl_plugin_sdk.zip を入手します。

AviUtlのお部屋ダウンロードセクション

ダウンロードが終わったら適当なフォルダに解凍しておきます。

Visual Studio

ビルドはVisual Studio 2022を使用します。
世の中には多くのC++コンパイラがありますが、C++初心者の自分がコマンドラインからコンパイルしたりMakeなどをセットアップするのは大変なので、今回はIDEに丸投げします。
なお、Visual Studioのインストール方法はこの記事では解説しません。

プロジェクトの作成

次に空のC++プロジェクトを作成します。
まずVisual Studioを開き、新しいプロジェクトの作成をクリックします。

VisualStudio起動画面

空のプロジェクトを選択して「次へ」をクリックします。

VisualStudioテンプレート選択画面

最後にプロジェクトの名前と位置を決めます。

この辺はデフォルトで大丈夫です。
自分は好みで「ソリューションとプロジェクトを同じディレクトリに配置する」にチェックを入れています。

設定が終わったら「作成」をクリックします。

VisualStudio作成画面

まっさらなプロジェクトが開きます。
次に、ソースファイルやヘッダファイルなどをプロジェクトに追加していきます。

ソリューションエクスプローラーを表示して、プロジェクト名を右クリックし、メニューの「エクスプローラーでフォルダーを開く」項目をクリックします。

ソリューションエクスプローラー内のプロジェクト名

プロジェクトのフォルダが開くので、ここに解凍した aviutl_plugin_sdk から .auf 以外の bmp_output から始まるファイルと output.h をコピーまたは移動します。

ソースファイルのコピー

コピーが終わったらVisual Studioへ戻り、ソリューションエクスプローラーから以下のようにファイルを設定します。
不安:リソースファイルカテゴリって何を入れればいいんですかね。.rc もここでいいのかな…

ソースファイルの構成

これでプロジェクトの作成は完了です。

ビルド

次にビルドのためにプロジェクトを設定していきます。
bmp_output.cpp をIDEで開いてみると文字列がエラーを起こしているのでまずはこれを黙らせます。

文字コードエラー

ソリューションエクスプローラーからプロジェクト名を右クリックして、メニューから「プロパティ」をクリックします。
「構成プロパティ」→「詳細」から 文字セットマルチ バイト文字セットを使用する に設定します。
次に「構成プロパティ」→「C/C++」→「言語」から 準拠モード既定 に設定します。

文字コード設定

エラーが消えました。

文字コードエラー解消

次にコンパイラやリンカーの設定をしていきます。
まず、先ほど設定したときと同じようにプロジェクトのプロパティを開きます。

「構成プロパティ」→「全般」から 構成の種類ダイナミック ライブラリ (.dll) に設定します。
次に同カテゴリ内「詳細」から ターゲット ファイルの拡張子.auo に設定します。

「構成プロパティ」→「リンカー」→「入力」に移動して モジュール定義ファイルbmp_output.def.def ファイルのパス)を設定します。

コンパイラリンカー設定

最後にIDE上部リボンの構成を Releasex86 に設定します。

アーキテクチャ設定

これでビルドのための設定は終わりです。
ソリューションエクスプローラーからプロジェクト名を右クリックしてメニューからビルドすると <プロジェクトのフォルダ>/Release/<プロジェクト名>.auo が生成されています。

これでサンプルをビルドできました。

動作確認

前のセクションでサンプルをビルドするという目的自体は果たされましたが、正しくビルドできているかを確認するために動作確認は大事です。
適当な aviutl.exe と同じ階層に plugins フォルダを作成してそこに生成した .auo ファイルを入れてAviUtlを起動します。

生成された .auo (DLL)が悪ければ、この時点でAviUtlがクラッシュしたりします。
ほとんどメモリ読み取り違反が原因なので、プラグインからエクスポートされる構造体が変ではないか(語彙力)確認してみてください。
サンプルから何もいじってなければこれは起きないはずですが…。

起動できたら、ツールバー →「その他」→「出力プラグイン情報」をクリックしてください。
ここで生成したプラグインが表示されていればもう正常に動いたようなものです。

出力プラグイン情報

もし、表示されていなければ異なったアーキテクチャでビルドしていることが原因の可能性があります。
AviUtlのプラグインはx86である必要があります。(要検証)

実際に、出力できるかも確認するために適当な動画を作成します。
本当に動画の内容はなんでもいいのですが、自分は加減速移動を使用してボールが跳ねるアニメーションを作ってみました。

AviUtl編集画面

ツールバー →「ファイル」→「プラグイン出力」→「連番BMP出力」をクリックします。
ファイル名に名前を入れて、適当なフォルダを選択し「保存」をクリックします。

出力された連番BMPファイル

出力が始まり、フォルダに連番BMPファイルが出力されていることが確認できます。
無事ビルドしたサンプルの動作を確認できました。

おわり

長文でしたが、最後まで読んでいただきありがとうございました。
ここまで長い記事や画像を使用した記事の執筆ははじめてで、大変読みにくくなってしまいました。

次回はRustでプラグイン作成に挑戦しようと思っています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?