5

VS 2013 RTM で openCV をコンパイルできた人はいますか? IlmImf モジュールで「min は名前空間 std に属していません」「max は名前空間 std に属していません」という一連のメッセージを取得しようとしましたが、opencv_features2d は次のエラーでコンパイルされません。

opencv\modules\core\include\opencv2/core/core.hpp(4512): 致命的なエラー C1075: '......\modules\features2d\src\features2d_init の左中かっこ '{' の前にファイルの終わりが見つかりました.cpp(187)' が一致しました

最新の CMake UI はまだ 2013 でのビルドをサポートしていないため (少なくとも UI からであり、私は初心者です)、私のプロセスは 2012 用に CMake を構成し、生成されたソリューションを 2013 で開き、コンパイラを vc12 にアップグレードすることでした。

「問題のある」ファイルにヘッダーインクルードを追加することで、最小/最大エラーを回避できましたが、上記で投稿した完全なエラーに困惑しています。

ありがとう

アップデート:

受け入れられた回答は、OpenCV を 32 ビット デバッグとリリース、および 64 ビット デバッグでコンパイルするために必要なものを提供しますが、現在、コンパイラは内部コンパイラ エラーのために 64 ビット リリースをコンパイルできません。これは、現時点ではおそらくコンパイラーのせいですが、答えはまだ多くの問題を解決することです。

更新 2: 64 ビットの問題は自動ベクトライザーのバグであることが判明しました。対応する回避策は次のとおりです。

こんにちは、素晴らしいバグレポートをありがとう。これはコンパイラ オプティマイザのバグであることを確認しました。今後のリリースで修正する予定です。

ソース コードの回避策が必要な場合は、 computeOrbDescriptor内のループでベクトライザーをオフにしてください。

#pragma loop(no_vector)

for (int i = 0; i < dsize; ++i)

{

   **...**

これで、orb.cpp と stardetector.cpp をビルドできます。

この問題が深刻で、重大なビジネス状況を引き起こしたり、製品の開発や展開を妨げたりする場合は、http://support.microsoft.comにアクセスするか、1-800-MICROSOFT に電話して支援を求めてください。マイクロソフト プレミアのお客様は、管理者、テクニカル アカウント マネージャー、またはマイクロソフト プレミア アカウントの担当者にお問い合わせください。

この MSConnect アイテムを閉じます。また何かありましたら遠慮なくお返事ください。

ありがとう、

Eric Brumer - Microsoft Visual C++ チーム

接続バグはここにあります。残念ながら、これに対する実際の修正は後日まで延期されます。

4

3 に答える 3

4

最初の問題の場合:

http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx

それは明示的に呼び出されます:

  • #include <algorithm>std::min() または std::max() を呼び出すときに必要です。

以前は、VC++ ライブラリの内部実装により、<string>これらの関数が取り込まれていました。

于 2013-07-10T04:14:50.040 に答える
3

内部コンパイラ エラーの問題の詳細については、 http://code.opencv.org/issues/3273を参照してください。

于 2013-10-31T20:30:34.247 に答える