none
VC++6.0与VS2005的编译问题 RRS feed

  • 问题

  • 我最近用VS2005编译一个基于第三方库(opencv_b3.1)的程序时,编译器提示出很多错误,这个程序在VC++6.0下编译运行都正常,下面是在VS2005中的错误:

    >d:\program files\opencv_b3.1\cvaux\include\cvaux.hpp(95) : error C2146: 语法错误 : 缺少“;”(在标识符“idx_type”的前面)
    1>d:\program files\opencv_b3.1\cvaux\include\cvaux.hpp(95) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\program files\opencv_b3.1\cvaux\include\cvaux.hpp(99) : error C2143: 语法错误 : 缺少“;”(在“&”的前面)
    。。。。

    类似的错误有好多,上面的第一个错误,定位到了Opencv_b3.1的一个模板类,如下:

    template<typename Node> class CvNodeIterator
    {
    public:
        typedef  Node                       node_type;
        typedef  node_type::value_type      value_type;
        typedef  node_type::idx_type        idx_type;                           //定位到该行
        typedef  CvNodeIterator<node_type> iterator;
        typedef  _CvNodeBlock<node_type>   block_type;

        value_type& operator *() const { return current_block->data[idx].val; }
        idx_type   get_idx() const { return current_block->data[idx].idx; }
        node_type* get_node() const { return &current_block->data[idx]; }
       
        iterator&  operator ++();  // prefix ++
        const iterator  operator ++(int); // postfix ++

        CvNodeIterator() { current_block = 0; idx = 0; }
        CvNodeIterator( block_type* _current_block )
            { current_block = _current_block; idx = 0; }
        CvNodeIterator( block_type* _current_block, idx_type _idx )
            { current_block = _current_block; idx = _idx; }

        bool operator == ( const iterator& another ) const
            { return (current_block == another.current_block) && (idx == another.idx); }
        bool operator != ( const iterator& another ) const
            { return (current_block != another.current_block) || (idx != another.idx); }
     protected:
        block_type* current_block;
        idx_type    idx;
    };
    运行环境是:windowsXP+sp2+VS2005,请高手帮忙看看是什么错误?自己查了好久了,找不到错误。谢谢!

    2008年11月30日 4:53

答案

  • VC6.0中很多类库在2005中都已经不用了, 建议可以吧需要的文件复制到vs2005 c++类库目录中, 也许有一定帮助.

    2008年12月1日 2:58
    版主

全部回复