この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19471|答える: 0

[出典] 「『Emgu.CV.CvInvoke』の型初代化器が例外を発生させた」?

[リンクをコピー]
掲載地 2015/11/25 10:57:59 | | |
「Emgu.CV.CvInvoke」の型初代化器は例外を投げました。
この例外を見た場合は、以下の点を確認してください

MSVCRTをインストールしましたか?
バージョン2.0+では、バンドルされているOpenCV 2.0バイナリがVisual Studio 2008で構築されており、依存関係の問題を解決するにはMSVCRT 9.0 SP1をインストールする必要があります。
バージョン1.5では、バンドルされているOpenCVのpre1.1バイナリはVisual Studio 2005で構築されており、依存関係の問題を解決するにはMSVCRT 8.0 SP1をインストールする必要があります。
OpenCVのdllを実行ディレクトリにコピーしましたか?
管理されていないDLLが実行ディレクトリにあることを確認してください。
Emgu CVバージョン<= 2.1の場合、これは以下のdllsを意味します:cvXXX.dll、cvauxXXX.dll、cxcoreXXX.dll、highguiXXX.dll、opencv_ffmpegXXX.dll、mlXXX.dll andcvextern.dll ここでXXXはOpenCVです バージョン番号。
Emgu CVバージョン>= 2.2の場合、これは以下のdllsを意味します:opencv_calib3dXXX.dll、opencv_contribXXX.dll、opencv_coreXXX.dll、opencv_features2dXXX.dll、opencv_highguiXXX.dll、opencv_ imgprocXXX.dll、opencv_legacyXXX.dll,opencv_mlXXX.dll、opencv_objectdetectXXX.dll,opencv_videoXXX.dll ここでXXXはOpenCVバージョン番号です。
プロジェクトの最適な立ち上がり方法は以下の通りです:
管理されていないDLLをプロジェクトフォルダにコピーしてください
プロジェクトを右クリックし、「Add->ExistingItem」をクリックして、すべての管理されていないDLLを選択します。それらをプロジェクトに追加します。
付属の各DLLについて、左クリックして「Copyto Output Directory」オプションを見つけて「Copy if newer」を選択してください。
32ビットOSを使っていますか?
Windowsインストーラーは32ビットWindows専用です。 64ビットOSを使用している場合、この問題を解決する方法は3つ考えられます。

sourceforgeから64ビットバイナリのみのzipパッケージをダウンロードして、プロジェクトに追加できます。
OpenCVは64ビットプラットフォーム向けにソースから再コンパイルすることも可能です。 fromSVNのビルド手順を参照してください
あるいは、64ビットOSでも.NETアプリケーションを32ビットモードで強制的に動作させる方法もあります。 これを行うには、実行可能プロジェクトの設定ページでPlatform Targetを'x86'として選択します。
依存関係が足りないのですか?
Dependency Walkerをダウンロードして「cvextern.dll」ファイルを開きます。 依存関係がないか確認してください。

上記のすべてを確認しましたが、それでも例外が出ています
この場合、ぜひ例を作成して実行してください。 例を作成したら、「Hello World」プログラムを実行してみてください。

「Hello World」が問題なく動作するなら、YouProjectと比較して設定の違いを見つけて修正してください。

「Hello World」が同じ「Emguのタイプ初期化器」を得た場合、 「例外を投げた」というメッセージを送り、InnerExceptionを探してディスカッションフォーラムに報告してください



EMGUのタイプ初期化。 CV。 cvinvokeは例外を設けます。
この例外を見た場合は、以下の点を確認してください
msvcrtをインストールしましたか?
バージョン2+、バンドルされたopencv 2バイナリはVisual Studio 2008をビルドするためのもので、依存関係の問題を解決するためにedmsvcrt 9 SP1をインストールする必要があります。
バージョン1.5、同梱のOpenCVプリ1.1バイナリビルドVisual Studio 2005では、依存関係の問題を解決するためにedmsvcrt 8 SP1をインストールする必要があります。
コピーしたopencv DLL実行ディレクトリですか?
管理されていないDLLが実行ディレクトリにあることを確認してください。
emgu CVバージョンでは< = 2.1で、これは次の DLL:cvxxx.dll,cvauxxxx.dll,cxcorexxx を意味します。 DLL、highguixxx.dll、opencv_ffmpegxxx.dll、mlxxx.dll andcvextern.dll xxxはopencvのバージョン番号です。
EMGU CVバージョンの場合> = 2.2 これは次のDLL:opencv_calib3dxxx.dllがopencv_contribxxxことを意味します。 DLL,opencv_corexxx.dll,opencv_features2dxxx。 DLL,opencv_highguixxx.dll,opencv_imgprocxxx.dll,opencv_legacyxxx。 DLL,opencv_mlxxx.dll,opencv_objectdetectxxx。 DLL、opencv_videoxxx.dll XXXはopencvversion番号です。
プロジェクトを構築する最良の方法は以下の通りです:
管理されていないDLLがプロジェクトフォルダにコピーされました
プロジェクトを右クリックして「Add-> existingitem」をクリックすると、すべての管理されていないDLLを選択します。 プロジェクトに加えましょう。
含まれる各DLLについて、左クリックして「コピー&出力ディレクトリ」オプションを探し、「更新されたらコピーする」を選択します。
32ビットのオペレーティングシステムを使っていますか?
Windowsインストーラーは32ビットWindowsのみを提供できます。 64ビットOSを使用している場合、この問題を解決する3つの方法があります。
sourceforgeから64ビットのバイナリのみのzipパッケージをダウンロードしてプロジェクトに追加できます。
また、64ビットプラットフォームからOpenCVソースをコンパイルすることも可能です。 建設fromsvn指令を参照してください
あるいは自分のものを強制することもできます。 .NETアプリケーションは64ビットOSでも32ビットモードで動作します。 これを行うには、実行プロジェクトの設定ページでプラットフォームターゲットを'x86"として選択します。
何か依存関係を見落としていますか?
Dependent Walkerをダウンロードして「cvextern DLLファイル」を開きます。 ”。 依存関係が抜けていないか確認してください。
上記はすべて確認しましたが、まだ例外があります
この場合、インスタンスを構築して実行してみてください。 インスタンスを構築した後、Hello Worldプログラムを実行してみてください。
Hello Worldが問題なく動作すれば、youprojectと比較し、構造的な違いを見つけて解決します。
「hello world」が同じ「初期値設定子のtype'emgu」を受け取った場合、 CV。 「cvinvoke」は例外を提示します。 フォーラムの内側の例外を探しているメッセージ





先の:0 Yuanlu Xiaomiブレスレットおよびその他の製品の詳細なチュートリアル
次に:C#はDllImportを通じてWin32 API関数をインポートし呼び出します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com