无法使用VS 2013 RTM编译OpenCV 2.4.5

Mra*_*anz 5 opencv visual-c++ visual-studio-2013

有没有人有幸用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和我是菜鸟),我的流程是配置CMake for 2012,然后用2013打开生成的解决方案并将编译器升级到vc12.

我能够通过在'违规'文件中添加标题包含来超过最小/最大错误,但我对上面发布的完整错误感到困惑.

谢谢

更新:

接受的答案提供了在32位调试和发布以及64位调试中编译OpenCV所需的内容,但现在编译器由于内部编译器错误而无法编译64位版本.这可能是编译器此时的错误,但答案仍然解决了许多问题.

更新2: 因此64位问题被证明是自动矢量化器中的一个错误.这是相应的解决方法.

嗨,谢谢你的错误报告.我确认这是编译器优化器中的一个错误.我们将在未来的版本中修复它.

如果您需要源代码解决方法,请在computeOrbDescriptor内的循环上关闭矢量化:

#pragma loop(no_vector)

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

{

   **...**
Run Code Online (Sandbox Code Playgroud)

这让我可以构建orb.cpp和stardetector.cpp.

如果此问题严重,导致严重的业务情况或阻止您的产品开发或部署,请访问http://support.microsoft.com或致电1-800-MICROSOFT寻求帮助.对于Microsoft Premier客户,请与您的管理员,技术客户经理或Microsoft高级客户代表联系.

我正在关闭此MSConnect项目.如果您还有其他需要,请随时回复.

谢谢,

Eric Brumer - Microsoft Visual C++团队

连接错误可以在这里找到.不幸的是,对此的真正解决方案被推迟到以后的日期.

小智 7

我已经设法在VS2013 RC上编译OpenCV 2.4.6,但最初它有相同的错误.我打开了VS解决方案并分两步修复了所有错误:

1)替换(Ctrl + H)

#include \<string\> 
Run Code Online (Sandbox Code Playgroud)

#include <algorithm>\n#include <string>
Run Code Online (Sandbox Code Playgroud)

整个解决方案中(确保在替换对话框中启用RegExp)

2)在"modules/opencv_features2d/Src/features2d_init.cpp"中将第184行更改为:

obj.info()->addParam(obj, "detector", (Ptr<Algorithm>&) obj.detector);
Run Code Online (Sandbox Code Playgroud)

(在此文件中搜索其他OpenCV版本的"GridAdaptedFeatureDetector")