有没有人有幸用VS 2013 RTM编译openCV?我试过并在IlmImf模块中得到一堆“min不属于命名空间std”“max不属于命名空间std”,并且opencv_features2d没有编译时出现以下错误:
opencv \ modules \ core \ include \ opencv2 / core / core.hpp(4512):致命错误C1075:在左侧括号'{'at'...... \ 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)
{
**...**
这让我建立了orb.cpp& stardetector.cpp。
如果此问题严重,导致严重的业务情况或阻止您的产品开发或部署,请转至http://support.microsoft.com或致电1-800-MICROSOFT寻求帮助。对于Microsoft高级客户,请与您的管理员,技术客户经理或Microsoft高级客户代表联系。
我正在关闭此MSConnect项目。如果您还有其他需要,请随时回复。
谢谢,
Eric Brumer - Microsoft Visual C ++团队
可以找到连接错误here。不幸的是,对此的真正解决方案被推迟到以后的日期。
答案 0 :(得分:7)
我已经设法在VS2013 RC上编译OpenCV 2.4.6,但最初它有相同的错误。 我打开了VS解决方案并分两步修正了所有错误:
1)替换(Ctrl + H)
#include \<string\>
到
#include <algorithm>\n#include <string>
整个解决方案中的(确保在替换对话框中启用RegExp)
2)在“modules / opencv_features2d / Src / features2d_init.cpp”中将第184行更改为:
obj.info()->addParam(obj, "detector", (Ptr<Algorithm>&) obj.detector);
(在此文件中为其他OpenCV版本搜索“GridAdaptedFeatureDetector”)
答案 1 :(得分:4)
第一期:
明确地呼吁:
#include <algorithm>
。由于VC ++库的内部实现,<string>
会引入这些函数。
答案 2 :(得分:3)
有关内部编译器错误问题的详细信息,请参阅http://code.opencv.org/issues/3273。