Visual Studio 2013でfoobar2000 SDKを使う


foobar2000 is 何?

foobar2000(フーバーにせん)は、Peter Pawlowskiが開発したフリーウェアのメディアプレーヤーである。ファイルの再生の他、タグ編集機能、Media Libraryと呼ばれるタグ情報のデータベース、ファイルの管理機能などを持つ。

foobar2000 - Wikipedia


必要な物とか

Visual Studio 2013 Professionalでプラグインを作成しようとした時に、少しコケたのでメモ。

必要なもの

  • foobar2000 SDK (最新版のSDK 2014-07-02を使用しました)
  • Visual Studio 2013 Professional

作業

ダウンロードしたSDKを適当な場所へ解凍。
Visual Studio 2013 (以下、VS2013)を開きます。
[ファイル] -> [新規作成] -> [プロジェクト] でWin32 コンソール アプリケーションを作成。
foobar2000自体がプラグインを読み込む際、名前が foo_**** でないと読み込まないので注意。

create

フォルダ構成が以下のようになっているはずなので、 foo_testplugin フォルダに SDK-2014-07-02 フォルダをコピー

foo_testplugin
|   foo_testplugin.sdf
|   foo_testplugin.sln
|
\---foo_testplugin <- このフォルダにSDKをコピー
        foo_testplugin.cpp
        foo_testplugin.vcxproj
        foo_testplugin.vcxproj.filters
        ReadMe.txt
        stdafx.cpp
        stdafx.h
        targetver.h

SDKフォルダをコピー後、フォルダ構成は以下のようになっていれば問題ありません。

foo_testplugin
\---foo_testplugin
    \---SDK-2014-07-02
        +---foobar2000
        |   +---ATLHelpers
        |   +---foobar2000_component_client
        |   +---foo_input_validator
        |   +---foo_sample
        |   +---helpers
        |   +---SDK
        |   \---shared
        \---pfc

次に、ソリューションエクスプローラー内の [foo_testplugin] -> [プロパティ] をクリックし、プロパティページを開きます。
ウィンドウ左上の構成がすべての構成になってるのを確認後、 [構成プロパティ] -> [全般] -> [構成の種類] を [ダイナミック ライブラリ (.dll)] に変更。
[構成プロパティ] -> [C/C++] -> [SDLチェック] を [いいえ (/sdl-)] に変更 ウィンドウ左上の構成をDebugにし、 [構成プロパティ] -> [C/C++] -> [コード生成] -> [ランタイム ライブラリ] を [マルチスレッド デバッグ (/MTd)] に変更。
ウィンドウ左上の構成をReleaseにし、 [構成プロパティ] -> [C/C++] -> [コード生成] -> [ランタイム ライブラリ] を [マルチスレッド (/MT)] に変更し、完了。

ソリューションエクスプローラー内のソリューションを右クリックし、 [追加] -> [既存のプロジェクト] をクリックし、下記のプロジェクトを追加

SDK-2014-07-02\foobar2000\SDK\foobar2000_SDK.vcxproj
SDK-2014-07-02\foobar2000\foobar2000_component_client\foobar2000_component_client.vcxproj
SDK-2014-07-02\foobar2000\helpers\foobar2000_sdk_helpers.vcxproj
SDK-2014-07-02\pfc\pfc.vcxproj

追加後、それぞれのプロジェクトを右クリックし、 [コンパイラとライブラリのアップグレード] をクリック。
メインのプロジェクト(foo_testplugin)を右クリックし、 [プロパティ] をクリック。
[共通プロパティ] -> [新しい参照の追加] で4つ全てにチェックを入れ、 [OK] をクリック。
SDK-2014-07-02\foobar2000\shared\shared.h を開き、22行目を #include <vssym32.h> に変更。 SDK-2014-07-02\foobar2000\helpers\helpers.h を開き、43行目の #include "CPowerRequest.h" をコメントアウト。

メインのプロジェクト(foo_testplugin)を右クリックし、 [プロパティ] をクリック。
画面左上の構成がすべての構成になっていることを確認し、 [構成プロパティ] -> [リンカー] -> [入力] -> [追加の依存ファイル] を SDK-2014-07-02\foobar2000\shared\shared.lib に変更。

stdafx.h の末尾に下記を追加

#include "SDK-2014-07-02/foobar2000/SDK/foobar2000.h"

foo_testplugin.cpp を以下のように書き換え。
今回は何もしないプラグインです。

// foo_testplugin.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

DECLARE_COMPONENT_VERSION(
	"test plugin",
	"0.1",
	""
);

[ビルド] -> [ソリューションのビルド] をクリックしビルドされたら完了。 foobar2000のcomponentsフォルダにコピーし、動作するかを確認。

参考 :: 総合スレ - foo_streamer