OpenCV Release构建错误:期望类型说明符

时间:2015-12-11 23:33:38

标签: c++ opencv stl

当我在发布模式(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,结果相同。

任何人

谢谢!

0 个答案:

没有答案