VisualStudioは入れてある前提で、AviUtlのお部屋からAviUtl Plugin SDKをDLする。現時点では2012/6/19更新の「AviUtl Plugin SDK for ver0.99m以降」という名前。解答して、VisualStudioから新しいプロジェクトを作る。ここから説明開始!
言語はC++。Visual c++ってあるけど違いはよくわかりません。てかVisualじゃないC++無いです。コンソールアプリケーションではなくWin32プロジェクト。

ウィザードが起動するので、次へ→アプリケーションの種類をDLLに、追加のオプションで空のプロジェクト。完了でおk

ビルドする方法なので、ビルドしてaviutlで認識される所までやります。サンプルに使うプラグインはdisp_filter.auf。SDKの中から以下の3ファイルを選択します。disp_filter.rcも必要と思っていたけど要らないっぽいんだよな。何に使うんだろう・・・

VisualStudioのプロジェクトファイルはこういう構成になっている訳で

ProjectディレクトリにSDKから選択した3つのファイルを貼り付ける

この段階でVisualStudioのソリューション エクスプローラーはこんな感じ。そもそもなんだけど、プロジェクトのディレクトリの中にいくらファイルを配置しても、それだけではVisualStudioからは認識されないのかな?F5押してもビルドだし、リフレッシュ的なコマンド無いし。このへんc#で開発しててもどうやって認識させればいいのか分からないし、JavaのEclipseではF5押せば自動的に認識してくれるからその辺良くわからない。

ソース、ヘッダー、リソースをそれぞれ右クリック→既存の項目を追加 でファイルを追加する。追加するファイルは以下のとおり。これでSDKからコピーした3つのファイルが全て認識された

disp_filter.cppを編集してビルドしていくけど、そのままだとエラーが出ると思う。
「IntelliSense: 型 “const char *” の値を使用して型 “TCHAR *” のエンティティを初期化することはできません」のエラー

ソリューションエクスプローラーからプロジェクトのプロパティ→構成プロパティ→全般→文字セット を、Unicodeからマルチバイトに変更してOK。この項目に限らないけど、構成プロパティはDebugとReleaseで違うから注意

実はこれだけじゃ駄目で、エラーも出ない箇所を直す必要がある。構成プロパティ→リンカー→入力→モジュール定義ファイル にdisp_filter.def を入れる。disp_filter.cppとfilter.hは自動的に認識してくれたのに、これだけは手動で指摘しないといけないんだね

出力されるファイルの拡張子がdllなので、aufに変換する。構成プロパティ→全般→ターゲットの拡張子を.aufに変更。ピリオドが居るから注意

この状態でビルドしたらOK。出力される先が、SolutionName\ProjectName\Debug ではなく、SolutionName\Debug\以下なのが微妙に謎

何はともあれ、これでOK!


出力先を変えるにはここ。ここにフルパスを書くんじゃなくて、多分もっと別の設定箇所があるはず。$(Outdir)がSolutionName\Debug\になっているので。

多分ここな気がする。確認してないです。

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

- 出力した後の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(仮、作成中)