Ошибки компиляции в ksmedia.h (в прямой X SDK) - PullRequest
0 голосов
/ 10 августа 2011

Мне дали проект на C ++, который мне нужно работать, который компилируется и работает на другом компьютере.Он использует Direct X SDK.Я ничего не изменил в проекте.Однако, когда я пытаюсь скомпилировать проект в Visual Studio 2008, я получаю ряд ошибок компиляции в ksmedia.h.Я искал и не мог найти других с теми же ошибками, которые я получаю, и действительным решением.Они выглядят следующим образом:

1>path\Include\ksmedia.h(453) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(453) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1>        path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(453) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(453) : error C2059: syntax error : '__uuidof'
1>path\Include\ksmedia.h(547) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(547) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1>        path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>\Include\ksmedia.h(547) : error C3121: cannot change GUID for class '<unnamed-tag>'
1>        path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(547) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(547) : error C2059: syntax error : '__uuidof'
1>path\Include\ksmedia.h(553) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(553) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1>        path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(553) : error C3121: cannot change GUID for class '<unnamed-tag>'
1>        path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(553) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(553) : error C2059: syntax error : '__uuidof'

Будем весьма благодарны за любые знания о причинах этих ошибок или о том, что я могу сделать для их исправления.

РЕДАКТИРОВАТЬ: я использовал старую версиюфайл ksmedia.h.Я изменил свою копию на ksmedia.h и обновил сообщение об ошибке, чтобы отразить изменение.Кроме того, версии Windows и DirectX SDK совпадают.Однако компьютер, на котором он компилируется, является 32-разрядным, а тот, на котором он не работает, - 64-разрядным.

1 Ответ

1 голос
/ 10 августа 2011

Поскольку проект компилируется на одном компьютере, а не на другом, вы, очевидно, ищете некоторую разницу между ними.

Одна из возможностей состоит в том, что на обеих системах установлены разные версии DirectX SDK. Возможно, не очень вероятная возможность, но стоит проверить, чтобы исключить ее из рассмотрения.

Другая возможность состоит в том, что на обеих системах установлены разные версии какого-либо другого SDK.

Третья возможность состоит в том, что две копии Visual Studio настроены на поиск включаемых папок различных SDK в разных порядках. Это может вызвать проблемы, когда определение для некоторого типа или макроса происходит из одного заголовочного файла в одной системе и совершенно другого заголовочного файла в другой системе.

Перейти в Инструменты | Варианты | Проекты и решения | VC ++ Каталоги в системе, где компиляции успешны. Установите для параметра «Показать каталоги» значение «Включить файлы», а затем запишите список отображаемых папок, включая порядок этого списка.

Теперь сделайте то же самое во второй системе, где происходит сбой компиляции, и сравните два списка. Два списка могут не совпадать. В одной системе может быть установлен SDK, а в другой - нет; две системы могут иметь один и тот же SDK, установленный в разных местах. Тем не менее, намерение списков должно быть одинаковым.

Если запись DirectX SDK в списке исправных систем появляется перед записью Windows SDK, то две записи в списке неисправных систем также должны отображаться в одинаковом порядке. Вы должны будете прислушиваться к своим суждениям о записях, которые появляются в одном списке, но не в другом, или тщательно экспериментировать (но помните, что изменение этого списка может повлиять на любую сборку, выполняемую этой копией Visual Studio).

...