Winamp plugin開発おぼえがき

必要なもの:Winamp SDK
公式なドキュメントがぜんぜんないみたいなのでサンプルとか参考にしつつ。Forumに結構な蓄積がされてるのではまったら検索するとなんかしら出てくる。
generalプラグインの雛形はこちら:Empty general purpose plug-in project. - Winamp & Shoutcast Forums
現在再生中の曲名を取得する方法はhttp://www.be-interactive.org/?itemid=47のソースを参考にした。というかソースの一部をパクった。
プラグインMFCを使用することは可能だが、Winampから呼ばれる関数の頭に

AFX_MANAGE_STATE(AfxGetStaticModuleState());

をつけるのを忘れないように。
Twitterとの通信についてはhttp://tokyoenvious.xrea.jp/b/web/hengband_to_twitter.htmlを参考にした。というかソースの一部を
Winampプラグインが認識されない場合に想像されること:

  • 関数のエクスポートに失敗している(general purposeならwinampGetGeneralPurposePlugin)
  • 関数はエクスポートできているが、呼び出し規約が違っている(extern "C"必須)
  • 必要なDLLが足りない
    • DLLエラーでプラグインがロードできない場合、*何のエラーメッセージも出さずにスルーされます*
    • 今回はこの仕様+MFCの非互換地獄ではまった。
    • 大人しくスタティックリンクしとけ!