記事一覧はこちら

Visual Studio 2015 Community でaviutlのプラグインをビルドする方法

基本として、aufは実質的にDLLと同じ。出力するファイルの拡張子を変えるだけでOK。そしてdllとexeはとても似ているらしい。まあ単体で実行する為のエントリーポイントがあるexeと無いDLLって感じかな。多分。C++やった事無いです。普段はjavac#

VisualStudioは入れてある前提で、AviUtlのお部屋からAviUtl Plugin SDKをDLする。現時点では2012/6/19更新の「AviUtl Plugin SDK for ver0.99m以降」という名前。解答して、VisualStudioから新しいプロジェクトを作る。ここから説明開始! 言語はC++。Visual c++ってあるけど違いはよくわかりません。てかVisualじゃないC++無いです。コンソールアプリケーションではなくWin32プロジェクト。 imgTemp-2015-05-23-11-12-27 ウィザードが起動するので、次へ→アプリケーションの種類をDLLに、追加のオプションで空のプロジェクト。完了でおk imgTemp-2015-05-23-11-16-38 ビルドする方法なので、ビルドしてaviutlで認識される所までやります。サンプルに使うプラグインはdisp_filter.auf。SDKの中から以下の3ファイルを選択します。disp_filter.rcも必要と思っていたけど要らないっぽいんだよな。何に使うんだろう・・・ imgTemp-2015-05-23-11-38-10 VisualStudioのプロジェクトファイルはこういう構成になっている訳で imgTemp-2015-05-23-11-26-46 ProjectディレクトリにSDKから選択した3つのファイルを貼り付ける imgTemp-2015-05-23-11-37-04 この段階でVisualStudioのソリューション エクスプローラーはこんな感じ。そもそもなんだけど、プロジェクトのディレクトリの中にいくらファイルを配置しても、それだけではVisualStudioからは認識されないのかな?F5押してもビルドだし、リフレッシュ的なコマンド無いし。このへんc#で開発しててもどうやって認識させればいいのか分からないし、JavaEclipseではF5押せば自動的に認識してくれるからその辺良くわからない。 imgTemp-2015-05-23-11-33-26 ソース、ヘッダー、リソースをそれぞれ右クリック→既存の項目を追加 でファイルを追加する。追加するファイルは以下のとおり。これでSDKからコピーした3つのファイルが全て認識された imgTemp-2015-05-23-11-40-07 disp_filter.cppを編集してビルドしていくけど、そのままだとエラーが出ると思う。 「IntelliSense: 型 "const char " の値を使用して型 "TCHAR " のエンティティを初期化することはできません」のエラー imgTemp-2015-05-23-11-42-34 ソリューションエクスプローラーからプロジェクトのプロパティ→構成プロパティ→全般→文字セット を、Unicodeからマルチバイトに変更してOK。この項目に限らないけど、構成プロパティはDebugとReleaseで違うから注意 imgTemp-2015-05-23-11-44-42 実はこれだけじゃ駄目で、エラーも出ない箇所を直す必要がある。構成プロパティ→リンカー→入力→モジュール定義ファイル にdisp_filter.def を入れる。disp_filter.cppとfilter.hは自動的に認識してくれたのに、これだけは手動で指摘しないといけないんだね imgTemp-2015-05-23-12-02-09 出力されるファイルの拡張子がdllなので、aufに変換する。構成プロパティ→全般→ターゲットの拡張子を.aufに変更。ピリオドが居るから注意 imgTemp-2015-05-23-12-06-57 この状態でビルドしたらOK。出力される先が、SolutionName\ProjectName\Debug ではなく、SolutionName\Debug\以下なのが微妙に謎 imgTemp-2015-05-23-12-10-14 何はともあれ、これでOK! imgTemp-2015-05-23-12-11-55 imgTemp-2015-05-23-12-12-54

出力先を変えるにはここ。ここにフルパスを書くんじゃなくて、多分もっと別の設定箇所があるはず。$(Outdir)がSolutionName\Debug\になっているので。 imgTemp-2015-05-23-12-15-52 多分ここな気がする。確認してないです。 imgTemp-2015-05-23-12-17-29

VisualStudioのソリューション名、VisualStudioのプロジェクト名、各種ファイル名、ファイルの中に記述されたファイル名と同じ文字列。これらはどこまで同じにする必要があるのか、どこまで自由に書き換えていいのかを調べた。 imgTemp-2015-05-23-12-31-34

  • 出力した後のaufのファイル名は何かと同じにする必要は無い。自由に書き換えて良い
  • (1)と(2)のソリューション名、プロジェクト名は何にも依存せず自由に書き換えてよい
  • (3)と(6)も自由に書き換えて良い。最初の予想では(3)と(6)は同じ名前にする必要があると思っていたんだが、違うらしい。(6)の存在意義が不明になってしまった
  • (4)はdisp_filter.cppの#includeと同じ値にする必要がある
  • (5)は前述のモジュール定義ファイルの値と同じにする必要がある
  • (7)は変更不可。ビルドを通す事は出来るが、Aviutlから認識しなくなる。

と、そんな感じ。大体予想通りで直感的な仕様。

これでビルドが出来るようになったから、頑張って自作コードを動かすことが可能って事。やったね

参考URL AviUtl オリジナルプラグイン公開サイト @ wiki - ビルド/とりあえず AviUtlのプラグインフィルタをデバッグ MinGWでAviUtlプラグイン作成 Diary 2005-1 AviUltプラグインの作り方 AviUtlプラグイン作成 - AviUtlプラグインWiki(仮、作成中)