90

Microsoft Visual Studio 2011ProfessionalBetaを使用しています

cMakeとVisualStudioComplierを使用してコンパイルしたOpenCVC ++ファイル(http://opencv.willowgarage.com/wiki/Welcome )を実行しようとしています。

ただし、プロジェクトをデバッグしようとすると、600以上のエラーが発生します。そのほとんどは次のとおりです。

エラーLNK2026:モジュールはSAFESEHイメージに対して安全ではありません。

どうやらこれらのファイルはopencv_ffmpegプロジェクトにありますが、見つかりませんでした。Microsoftヘルプページのsafeseh Safe Exception Handlersページを確認しましたが、明確な回答は見つかりませんでした。

他の誰かがこの問題を抱えているのか、そして彼らがなんとかそれを修正することができたのかどうか疑問に思いました。

4

5 に答える 5

153

プロジェクト プロパティ -> 構成プロパティ -> リンカ -> [詳細設定] タブで [イメージに安全な例外ハンドラが含まれています] オプションを無効にすると役立ちました。

于 2013-11-03T16:36:08.377 に答える
65

コメントから:

これは、以前のバージョンのコンパイラによって作成されたコードを含む.objまたは.libをリンクするときに発生します。もちろん、ソースの代わりにopencv_ffmpegのバイナリをダウンロードした場合はどちらが一般的でしょう。リンカオプションをオフにすることはできますが、それでもバイトできるCRTバージョンの非互換性があります。ソースからライブラリを再構築します。–ハンスパッサント5月15日13:01  
 
助けてくれてありがとう、それはうまくいった–アーロントンプソン5月17日14:50

于 2012-10-19T18:51:16.020 に答える
11

もう 1 つの方法は、SEH ハンドラー (たとえば、空) を asm ファイルに追加し、それらをオプションでコンパイルしてから、コンパイラ オプション/safesehで通常どおりに他のコードをコンパイルすることです。/SAFESEH:YES

空の SEH ハンドラ:

.safeseh SEH_handler

SEH_handler   proc
;handler
ret

SEH_handler   endp
于 2014-09-10T16:48:43.120 に答える
0

走行距離は異なる場合がありますが、上記の提案はどれもうまくいきませんでした (ただし、独自の asm 例外ハンドラーをロールしようとはしませんでした)。

うまくいったのは、ビルド ターゲット Release/x64 を選択することでした。

64 ビット マシンで Windows 10 を実行し、Visual Studio 2015 を使用しています。

ターゲットの Release/Win32 も動作します。主なことは「リリース」を選択することだと思います。

于 2017-05-15T18:38:06.340 に答える