Проблема компилятора C200 VS2005, включая <comdef.h> в приложении MFC - PullRequest
0 голосов
/ 03 февраля 2009

У меня возникли проблемы с преобразованием старого проекта из VS6 в VS2005. В одном месте кода он использует тип variable_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 '='

Вероятно, есть какая-то конфигурация, которая неверна, некоторые определяют, что отсутствует или некоторые включают файл, который я должен был включить, но я не могу найти проблему Любые указатели в правильном направлении очень ценятся

Ответы [ 2 ]

0 голосов
/ 03 февраля 2009

Это похоже на одну из двух вещей: проблему порядка включения или когда вы заявили, что что-то не определено, но я склоняюсь к первому. Возможно, вы захотите проверить msdn и убедиться, что нет ограничений на возможность включения comutil.h (я знаю, что это проблема, если вы включаете winsock2.h перед windows.h). В C / C ++ есть также опция Advanced to Show Includes (опция / showInclude из командной строки), которая обычно полезна при попытке отследить подобные проблемы.

0 голосов
/ 03 февраля 2009

Ваш собственный код делает что-то вроде этого:

#define long int
...