Webカメラを制御するツールを作成中.10年近く前にDirectShowを使ったのを作ったことがありますが,DirectXから抜けてPlatformSDKになったとか,それがWindowsSDKになったとか,それがVisualStudioに付いてくるとか,qedit.hは含まれていないとか,ちょっと何言ってるか解らない.昔のコードを開発する環境がうまく構築できず,断念しました.
で,今度はOpenCVに頼る方法.扱うDLLを増やしたくない思いがあるのですが,仕方ない.10円プログラムならちゃんと制御できました.しかし,表側をC#のEXE,裏側をC++/CLIのクラスライブラリ,そのDLLからOpenCVを呼ぶようにしたところ,うまく行きません.BadImageFormatExceptionが出ます.プラットフォームx86とx64が混在しているあるあるな例外だということは判っているのに,原因が定まりません.OpenCVのDLLとLIBとHのバージョンは合っているし,EXEからDLLまで一気通貫,ANY CPUじゃなくてx64指定でビルドしているし,自機は64bits機だし.
殆んど使ったことのないOpenCV周りを調べていたのですが,軒並みコメントアウトしても再現するので,ここじゃないなと.ひょんなことから,C#でIntPtr.Sizeを視てみたら,「4」が返ってきました.なるほど.DLLのビルドの際はメニューバー下のリストボックスで「x64」を選べばそれでビルドされますが,EXEっつーかC#の方は違うのね.プロジェクトのプロパティから設定しないといかんのね.