Отсутствует guiddef.h в проекте - PullRequest
0 голосов
/ 18 мая 2011

Я новичок в Visual C ++.

Я пытаюсь использовать библиотеку A, которая, в свою очередь, использует другую библиотеку B. Когда я пытаюсь включить заголовок A, я получаю «Ошибка C2061: синтаксическая ошибка: идентификатор 'GUID' ".Эта ошибка вызывается в заголовке в библиотеке B. Когда я проверяю строку, которая выдает ошибку, проблема заключается в том, что заголовок в библиотеке B использует определение, найденное в Guiddef.h, который является заголовком Microsoft.

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

Я пользуюсь Visual Studio 2010 Premium.

Есть идеи, что я делаю неправильно?

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Не знаю, что вы имеете в виду, добавляя его в проект или создавая тот, который добавляет его, но когда guiddef.h находится в вашей системе и ваши каталоги (в общих свойствах) в вашей среде MSVC правильно настроены, вы простонеобходимо добавить #include <guiddef.h> перед включением файлов lib-header в ваши файлы cpp или h, и все будет (должно) быть в порядке.

1 голос
/ 18 мая 2011

Возможно (хотя и не всегда верно), что вам нужно включить библиотеку в качестве зависимости компоновщика.Здесь я предполагаю, что вы уже используете #include (и у вас правильный регистр, строчная буква g)

Мое предложение:

  1. Откройте проект с включенным заголовком
  2. откройте меню «Проект» и выберите «Свойства»
  3. В разделе «Свойства конфигурации» выберите «Компоновщик»
  4. в разделе'linker' select 'input'
  5. взгляните на поле 'дополнительные зависимости' (справа вверху справа).Вы можете увидеть некоторые библиотеки, перечисленные там.
  6. Запишите все библиотеки, включенные в качестве зависимостей, и повторите эти шаги в своем «сломанном» проекте.Добавьте соответствующие библиотеки в «сломанный» проект, если необходимо.

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

Надеюсь, это поможет, или, по крайней мере, не отвлечет вас от курса!

edit:

На самом деле, для некоторых заголовков в Windows API вы не сможете включить их «в одиночку» (я не уверен, еслиguiddef.h является одним из них), но они должны быть включены в качестве подзаголовка windows.h.

1 голос
/ 18 мая 2011

guiddef.h является частью Windows SDK.Если у вас VS 2010 Express, SDK не входит в комплект, вам нужно будет загрузить его отдельно.

Если вы используете VS SKU, который находится «над» Express, SDK уже должен быть установлен (I 'Я не уверен, можете ли вы отменить выбор или нет, когда находитесь в срыве).По умолчанию в него входят:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\

Ярлыки «Командная строка Visual Studio», которые устанавливает VS, должны соответствующим образом установить переменную среды INCLUDE.И проект C ++ по умолчанию также должен иметь соответствующую настройку пути включения, но это можно изменить в свойстве проекта «Каталоги VC ++» (это нужно проверить).Если у вас есть неправильная настройка для каждого проекта, измените ее там.

Однако, если ваши свойства каталогов VC ++ для всей IDE, которые наследуются каждым (или, по крайней мере, большинством) проектов C ++, испорченыследуйте инструкциям в этой статье блога, чтобы исправить глобальные настройки каталогов VC ++ в VS 2010:

В частности:

Если вы откроете представление Property Manager для просмотра листов свойств, связанных с вашим проектом, вы увидите, что один из листов свойств называется Microsoft.Cpp.Win32.User.Этот лист свойств фактически хранится в LocalAppData, как и файл VCComponents.dat, в каталоге %LocalAppData%\Microsoft\VisualStudio\10.0.Используя редактор свойств на листе свойств (просто щелкните правой кнопкой мыши на этом узле листа свойств и выберите Свойства ...), вы увидите, что вы можете вносить изменения непосредственно в этот файл.Поскольку все проекты по умолчанию импортируют этот лист свойств, вы эффективно редактируете каталоги VC ++ так же, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...