繁体   English   中英

VS2005 C ++编译器问题包括 <comdef.h> 在MFC应用程序中

[英]VS2005 C++ compiler problem including <comdef.h> in MFC application

我在将旧项目从VS6转换为VS2005时遇到了一些麻烦。 它在代码的某个位置使用了variant_t类型,因此为此目的包括了comdef.h。 comdef.h然后包含comutil.h,它将为我生成这些错误:

c:\program files\microsoft visual studio 8\vc\include\comutil.h(978) : error C2535: '_variant_t::_variant_t(int) throw()' : member function already defined or declared
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(970) : see declaration of '_variant_t::_variant_t'
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1007) : error C2535: '_variant_t::operator int(void) const' : member function already defined or declared
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(998) : see declaration of '_variant_t::operator int'
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1037) : error C2535: '_variant_t &_variant_t::operator =(int)' : member function already defined or declared
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(1029) : see declaration of '_variant_t::operator ='
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1331) : error C2084: function '_variant_t::_variant_t(int) throw()' already has a body
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(970) : see previous definition of '{ctor}'
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1588) : error C2084: function '_variant_t::operator int(void) const' already has a body
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(998) : see previous definition of '.H'
c:\program files\microsoft visual studio 8\vc\include\comutil.h(2006) : error C2084: function '_variant_t &_variant_t::operator =(int)' already has a body
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(1029) : see previous definition of '='

可能有些配置不正确,有些定义丢失,或者有些应该包含的包含文件,但我似乎找不到问题。 任何指向正确方向的指针都值得赞赏

这看起来像两件事之一,包括包含顺序问题,或者正如您所说的那样,有些东西没有定义,但我倾向于第一个。 您可能需要检查msdn并确保对何时可以包含comutil.h没有限制(我知道如果在Windows.h之前包含winsock2.h,这是一个问题)。 在“ C / C ++”>“高级”下还有一个选项来显示包含(命令行中的/ showIncludes选项),在尝试跟踪此类问题时通常很有用。

您自己的代码是否执行以下操作:

#define long int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM