VC2011/VC2012编译OpenCV时, error C2977 "std::tuple" too many template arguments等问题的解决方法

1. 编译时,error C2977 "std::tuple" too many template arguments问题的解决办法

网文http://www.cnblogs.com/fresky/articles/2455058.html中的方案如下:

打开 c:\program files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef,把 _VARIADIC_MAX定义成10。

这个方案一方面需要Administrator,其实是需要System权限才能修改Windows 8中的System文件,另一方面,会对所有的C/C++代码造成影响


其实,更简单的方法是打开“解决方案资源管理器”,右键打开项目“属性”,在C/C++ --> “预处理器”--> “预处理定义”中增加以下行即可:


_VARIADIC_MAX=10


编译OpenCV, 通过...


2. OpenCV编译时greater函数报错的解决办法:由于只有一处用到greater函数,咱直接用lambda函数替换


//sort(edges.begin(), edges.end(), vector::greater());
sort(edges.begin(), edges.end(), 
[](const GraphEdge& _Left, GraphEdge & _Right) -> bool 
{ // apply operator> to operands
return (_Left > _Right);
});


3. OpenCV编译时,bind2nd和plus函数编译时报错,这个 ?


transform(tpts.ptr() + m, tpts.ptr() + n, tpts.ptr() + m, bind2nd(plus(), shift_outl));
解决的方法是#include
xfunctional位于VC2012的include目录下,是一个函数模板,用这个模板可以实例化plus和bind2nd函数,因此这里可以不劳动cliext了,问题于是解决



你可能感兴趣的:(C&C++,c,microsoft,include,x86)