Help us understand the problem. What is going on with this article?

[C++] DirectShowのフィルタを自作しようとして軽くハマった話

More than 1 year has passed since last update.

0. TL;DR

以下のエラーが発生.
- LNK2019 未解決の外部シンボル __imp__vsnwprintfが~
- LNK2001 外部シンボル "__imp__vswprintf は未解決です"

VisualStudio2015以降だと, printf()やscanf()関係がガラッと変わっているらしく, リンカの入力オプションにlegacy_stdio_definitions.libを追加しなければならなかったらしい.

【参考サイト】

解決に導いてくれた記事

1. はじめに

前回, DirectShowを使おうとして軽くハマったわけですが, 無事解決し清々しい気持ちでプログラムを書き始めました.
開発を進めるにつれ, どうやら自作のフィルタを作成しなければならないことを知り, 早速取り掛かることに.

そこで事件が起こるわけです...

2. strmbased.libなんてないジャマイカ

最初に言っておくとジャマイカは何も関係ありません.

早速 MSDN に行ってフィルタの自作方法を検索してみると, (SDK)\Samples\Multimedia\C++\BaseClasses に「strmbased.lib(or strmbasd.lib) があるからそれ使ってね! あ, あと streams.h もちゃんと include するんだぞ!」って書いてあったので, まずそのディレクトリを探してみると見事になかったため, なんのSDKをインストールする必要があるのか調べることに.

このサイトによると, [Windows SDK for Windows Server 2008] か [Windows SDK for Windows Vista] をインストールすればいいらしいので落としに行ってみると...

 - We're sorry, this download is no longer available.

え, もう落とせないやん... MSDNのサブスクリプションないとアカンのか(絶望).
「もうダメだぁ~, おしまいだぁ~」などと言っているヒマはないため, 過去プロジェクトをひたすら検索しまくることに.

そうしたら, 奇跡的に発見することに成功!! やったね!!
でも, これ普通に趣味としてやってる人は開発できないよね? Microsoftさん, どうにかならんの?
まあ, 古の技術じゃなくてMedia Foundationとか使えって話なのかもしれませんが...

3. 恐怖のリンカエラー

順調に開発を進め, いざビルドを実行してみるとリンカエラーが...前回の悪夢が蘇る.
「まーた君かぁ. 壊れるなぁ.」 などと考えているヒマもなくGoogle先生に尋ねてみることに.
しかし, あまりの情報量の多さに四苦八苦. 手当たり次第試してみることに! これが地獄の始まりとは知らずに...

数撃ちゃ当たるだろ戦法は必ず1つの方法で解決できるときには有効ですが, 今回の場合, 色々な原因が考えられる状況ではあまりに無力...

数撃ってるうちに気付きました. これ, 解決方法の組み合わせで解決する場合を考えると無理だよね?と.
そこで今一度, Google先生に聞いてみることに.

サーチすること1時間くらい. ようやく解決に導いてくれた記事に辿り着きました!

サイトの導きの通りに実行することによって, 無事リンカエラーともおさらばできましたとさ!!

4. おわりに

実はこの話, これでめでたしめでたしでは終わりません.
なんと今回作成した自作フィルターは...

見事お蔵入りとなりました!!!!泣
結局うまく動かなかったので, 別の手法で実現することとなりましたとさ.
トホホ...

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away