AVIFileInitに関する初期化処理についての疑問

このQ&Aのポイント
  • Video for WindowsでAVIを扱うプログラムを作成したいが、AVIFileInit()の初期化処理についてわからない部分がある。
  • AVIFileInit()の呼び出し回数とAVIFileExit()の呼び出し回数は同じである必要があるが、複数回呼び出すとエラーが発生する。
  • 単一のアプリの場合は複数回の初期化呼び出しは避けるべきであり、DLLからの呼び出しの場合はどこで初期化するかを考える必要がある。
回答を見る
  • ベストアンサー

AVIFileInitに関して

Video for WindowsでAVIを扱うプログラムを作成したいのですが、AVIFileInit()による初期化処理に関してわからないところがあります。 それは、「AVIFileInit()による初期化は何を単位に行えばよいか」ということです。 いろいろと調べていると、「AVIFileInit()の呼び出し回数と同じだけ、AVIFileExit()を呼ぶ必要がある」と書かれているので、初期化処理を複数回呼び出す可能性があるとも思えるのですが、自分のプログラムにおいて複数回AVIFileInit()を呼び出すと、エラーが発生してしまいます。(2回目の初期化のあと、AVIFileOpenを呼ぶとエラーとなります。) 単一のアプリの場合は、複数回呼び出してはいけないのでしょうか。 また、AVIファイルを扱うDLLを複数作成してアプリから呼び出し、さらにアプリでもDLL処理とは別のところでVFWによるAVI処理を行うといった場合には、初期化処理はどこで行うべきなのでしょうか。 ご存知の方が見えましたらお教えください。 開発環境はWindows2000+VisualC++6SP5です。

質問者が選んだベストアンサー

  • ベストアンサー
  • takscape
  • ベストアンサー率57% (15/26)
回答No.1

これまでの経験からすると、AVIFileInit()の呼び出しは、プログラムの初期化時に一度だけ行えばよろしいかと存じます。 同じく、AVIFileExit()の呼出は、プログラムの終了時に一度だけ行えば問題ありません。 AVIファイルを扱うDLLを複数利用する場合でも同じです。DLLを利用するアプリケーション側で、一度ずつAVIFileInit()/Exit()を呼べば問題ありません。 この場合、DLL内でAVIFileInit()/Exit()を呼び出す必要はありません。

gakutensoku
質問者

お礼

takscapeさま ご親切にお教え頂き、ありがとうございます。 まずは教えて頂いたことを参考に実装してみます。

関連するQ&A

  • VisualBasic6.0からVisualC++で作成したDLLを呼

    VisualBasic6.0からVisualC++で作成したDLLを呼び出す、簡単なプログラムの仕方を教えてください。 初心者ですが、VisualBasic6.0からVisualC++で作成したDLLを呼び出す簡単なプログラムの仕方、または、サンプル等がありましたらどうぞ宜しくお願いいたします。初心者なので、可能な限り、簡単なプログラムのサンプルがあったら嬉しいです。

  • DLLの呼び出しについて

    C++BuilderXで開発したアプリで、CreateProcess()で子プロセスを呼び出すときに 時々、DLLの初期化エラー(0xc0000142)が発生するので、DependencyWalkerを使って 呼び出されているDLLを調べたところ、124個ものDLLが呼び出されていました。 中には"googledesktopcommon.dll"などまったく関係の無さそうなものまで呼び出されていました。 本来、呼び出されるDLLはプログラム内で使用されるものに限定されるものだと 思うのですが、アプリケーション実行時に呼び出されるDLLというのは どこで決まっているのでしょうか。 また、余計なDLLが呼び出されないように改善することはできますでしょうか。 宜しくお願いします。

  • VC++6で作成したDLLをVC++.NET2003から呼び出せますか

    現在、VC++.NET2003で作成しています。あるメーカから提供されているDLLがあるのですが、そのDLLとのリンクまではできたのですが、実行するとエラーになってしまいます。 (プログラムが異常終了するのではないのですが、そのDLLからの戻り値がエラーになり、期待した結果が得られません。) そのDLLはVC++6で作成したものらしく、マニュアルには、VC++6で作成したアプリケーションからの呼び出し方法が、記述されていました。 VC++6でアプリを作成すれば、正常に呼び出せることは明白なのですが、いかんせん、VC++.NET2003での開発が、ある程度進んでしまっていますので、いまからVC++6に切り替えるわけにもいきません。 それで、一般論として、確認したいのですが、VC++6で作成したDLLをVC++.NET2003で使用することは、出来ないのでしょうか。(これから、メーカにも確認する予定ですが、まずは、こちらで確認したく、投稿した次第です)

  • Explorer.exeのエラーを回避したい

    aviの入っているフォルダを開くとexplorer.exeのエラーで終了してしまいます。 過去ログを見たらcodecの問題だということが書いてありました。 ffdshowのアンインストール、DivXのアンインストールをしてから再起動して、aviのあるフォルダを開いたら前回と同じで終了してしまいました。 これ以上どうしていいかわかりません、OSのクリーンインストール以外で解決方法があれば教えてください。 今、ビデオCodecを見てみましたが、削除したはずのDivXのコーデックが残っています。 何回削除してもダメなようですね。 現在ビデオCodecに表示されているのは以下です DicX 6.8.4 Codec iccvid.dll Indeo video 5.10 ir32_32.dll ir41_32.ax iyuv_32.dll msh261 msh263 msrle32.dll mscidc32.dll msyuv.dll tsbyuv.dll vp6vfw.dll よろしくお願いします。

  • C++でのアクセス違反

    WindowsXP、VisualC++6.0でのプログラムです。 C側からロードするDLL(自分で作成)のあるaddress(いつも同じ)で たまに、アクセス違反となりMicrosoft送信メッセージが出てプログラムが閉じます。 頻度は、1ヶ月に1回程度です。 よく起こる号機とそうでない号機が存在します。 あるアドレスのエラー個所は、「変数=x;」 という文です。 エラーが起こった場合は、変数の配列の添え字が配列の次元を越える数値は 入らないようにしているのに、想定外の値となっているようです。 このような経験があった方は、どういうふうに解決されているのか教えてください。

  • WinXPで作成したアプリをWin7で起動できない

    ・開発環境  WindowsXP  VisuaStudio6.0 C++ ・起きている現象  上記開発環境にて、別の人が作成したDLL(××.dll)を組み込んだアプリを作成していますが、  Win7のPCにexe, dllをコピーして起動しようとしたところ、  「プロシージャ エントリポイント 〇〇(特定の関数名)が  ダイナミックリンクライブラリ ××.dllから見つかりませんでした」  というエラーが出て起動できません。  原因として何が考えられるでしょうか?回避策等はありますか?  

  • AVIファイルが再生できない

    こんにちわ。 現在、ファイル保存したAVIファイルを再生するプログラムを組んでいます。 もともと、ハードにあった時計のアニメーションは再生できるのですが、DLしたAVIファイルや、ビデオカメラで撮影した映像は再生できません。 参考書をそのまま写したプログラムなのですが・・・ 考えられる問題点などがあれば、アドバイスお願いします。 開発環境 VisualC++6.0 Win XP

  • C++開発アプリとDLLとで同じ領域のデータを共有するには

    お世話になっています。 ただいまC++でアプリ開発をしていますが、C++で作成したアプリと、DLLとで同じ領域のデータを共有して使いたいと思っています。 C++で外部で宣言した変数(構造体)のデータをDLLで参照して、内容を変更、C++アプリで変更した内容を参照して処理すると言う具合です。 DLLの方は既に作成済みで、引数としてC++アプリのデータを渡すことが出来ないので、どうにかしてC++で宣言した変数を参照したいのですが。 よろしくお願いします。

  • WindowsMobile5.0の開発環境

    こんにちは。 WindowsMobile5.0の開発環境について教えてください。 今まで、PPC2003SEで動くアプリをeVC++4.0を使用して、 開発してきたのですが、PPC2003SEのPDAが市場から無くなりつつ あるので、WindowsMobile5.0に移行していく必要が生じました。 そこで調べてみたのですが、WindowsMobile5.0の開発環境として VisualC++.NET2005が使えるということはわかったのですが eVC++4.0が使えるかどうか調べ切れませんでした。 できれば、WindowsMobile5.0用のアプリの開発をeVC++4.0で 行いたいのですがそれは可能でしょうか? 不可能な場合、eVC++4.0で作成したアプリをVC++.NET2005 に変換することは可能でしょうか? よろしくお願い致します。

  • 開発環境の設定に関する質問です。

    開発環境の設定に関する質問です。 LinuxとWindows両方で動くコンソールアプリを作成したいと思っています。 内容はまだ確定はしていませんが、ネットワークを使った簡単なWebサーバーを作ってみたいと思っています。 開発環境はWindowsXP VisualC++2008Expressです。 そこで質問です。 VisualC++2008Expressのプロジェクト作成時(ファイル作成時も含め)はどのように設定すれば、Linuxに近い環境にすることができるのでしょうか。 何か至らぬところがあればすみません。 ご教授おねがいします。

専門家に質問してみよう