当我在发布模式(MT运行时库,Visual Studio Express 2012 Update 5)中编译时,我的应用程序(使用OpenCV 3.0)出现了一些构建错误。 在调试模式(MTd)中构建很好。 这两个构建链接到正确的静态库(" d"用于调试,而不是用于发布),并且错误发生在链接阶段之前,在cvstd.hpp文件中。
这是一个x64版本,定义了WIN32(其中一个库需要它)。
cvstd.hpp @ line 155中的错误:预期类型说明符
/*!
The STL-compilant memory Allocator based on cv::fastMalloc() and cv::fastFree()
*/
template<typename _Tp> class Allocator
{
public:
typedef _Tp value_type;
typedef value_type* pointer;
typedef const value_type* const_pointer;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
template<typename U> class rebind { typedef Allocator<U> other; };
explicit Allocator() {}
~Allocator() {}
explicit Allocator(Allocator const&) {}
template<typename U>
explicit Allocator(Allocator<U> const&) {}
// address
pointer address(reference r) { return &r; }
const_pointer address(const_reference r) { return &r; }
pointer allocate(size_type count, const void* =0) { return reinterpret_cast<pointer>(fastMalloc(count * sizeof (_Tp))); }
void deallocate(pointer p, size_type) { fastFree(p); }
void construct(pointer p, const _Tp& v) { new(static_cast<void*>(p)) _Tp(v); }
void destroy(pointer p) { p->~_Tp(); }
size_type max_size() const { return cv::max(static_cast<_Tp>(-1)/sizeof(_Tp), 1); }
};
错误发生在void construct(...)行。我不知道它是否是一个bug,与VC2012 STL实现不兼容,或者是什么?
我尝试了2.4.9,结果相同。
任何人
谢谢!