OpenCvSharpでのエラー

OpenCvSharpを使って作ったプログラムを別のPCで実行しようとしたところエラーが発生した。
もちろん、OpenCvSharpもOpenCVも全てのDLLをプログラムと同じディレクトリに入れている。

特に、opencv_imgproc231.dllの64bitと32bitを直接実行ファイルのディレクトリに入れた場合、以下のようにエラーに違いが出た。

64bit DLL

P/Invokeが原因で例外が発生しました。
以下の項目を確認してください。

1. OpenCVのDLLが実行ファイルと同じ場所に置かれていますか?またはパスが正しく通っていますか?
2. Visual C++ Redistributable Packageをインストールしましたか?
3. OpenCVのDLLやOpenCvSharpの対象プラットフォーム(x86またはx64)と、プロジェクトのプラットフォーム設定が合っていますか?

System.BadImageFormatException: 間違ったフォーマットのプログラムを読み込もうとしました。(HRESULTからの例外: 0x8007000B)
 場所 OpenCvSharp.CvInvoke.cvReleaseHist(IntPtr& hist)
 場所 OpenCvSharp.Utilities.PInvokeHelper.TryPInvoke()


32bit DLL

P/Invokeが原因で例外が発生しました。
以下の項目を確認してください。

1. OpenCVのDLLが実行ファイルと同じ場所に置かれていますか?またはパスが正しく通っていますか?
2. Visual C++ Redistributable Packageをインストールしましたか?
3. OpenCVのDLLやOpenCvSharpの対象プラットフォーム(x86またはx64)と、プロジェクトのプラットフォーム設定が合っていますか?

System.DLLNotFoundException: DLL’opencv_imgproc231’を読み込めません: 指定されたモジュールが見つかりません。(HRESULTからの例外: 0x8007007E)
 場所 OpenCvSharp.CvInvoke.cvReleaseHist(IntPtr& hist)
 場所 OpenCvSharp.Utilities.PInvokeHelper.TryPInvoke()


64bitだとフォーマットが違うといわれているので、やはりOpenCVのプラットフォームの対象はあっているようだ。

結論として、何がいけなかったかというと私はTBBを有効にしてOpenCVをコンパイルしていたのだが、TBBのDLLは一緒に別のPCへ持っていかなかったことが原因だった。
TBBのパスを通したところ問題なく動作するようになった。

 

備考: 旧ブログ移植

コメント

PAGE TOP
Ads Block Detector Powered by codehelppro.com
Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました