![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
igor_bogomolov |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Установил впервые в жизни Microsoft Visual Studio 10 express.
Пытаюсь скомпилировать простенькое приложение, ничего не выходит, постоянно ругается на свой же файл winnt.h Получаю следующие ошибки Раскрывающийся текст C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ContextRecord" C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(6361): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12983): error C2065: PCONTEXT: необъявленный идентификатор C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "ContextRecord" C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): warning C4229: устаревший элемент: пропуск модификаторов для данных C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2182: RtlCaptureContext: недопустимое использование типа "void" C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2491: RtlCaptureContext: определение dllimport данные не разрешено C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): error C2059: синтаксическая ошибка: ) C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13372): error C2143: синтаксическая ошибка: отсутствие ";" перед "__stdcall" C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13372): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(13376): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(14982): error C3861: __readfsdword: идентификатор не найден Как с этим бороться? |
|
|
ufna |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Я сталкивался в двух проявлениях:
1. В списке инклюдов windows.h и excpt.h должны стоять сразу перед winnt.h 2. Поместить $(_ARCHFAM_) или $(ARCHFAM) в препроцессор definition, или добавить /D "_X86_" или /D "X86" в коммандную строку билда |
|
|
igor_bogomolov |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
winnt.h подключается в библиотеке nppapi, при этом не на прямую, а через windef.h. Сами исходники я менять не буду. Попробую инклюдники, что ты написал, в main-файл добавить, может поможет.
По второму пункту не очень понял что сделать нужно. Я до этого msvc не использовал, и сейчас копаться в его настройках как то не хочется. Я генерирую файл проекта при помощи cmake. Правильно ли я понял, что нужно добавить дефайн? add_definitions(-D_X86_) или add_definitions(-DX86) |
|
|
igor_bogomolov |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
ufna, спасибо add_definitions(-D_X86_) помогло
![]() |
|
|
ufna |
![]()
Сообщение
#5
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Всегда рад
![]() По первому пункту скорее важен порядок инклюдов в самой студии, хотя не помню уже ![]() А по второму - обычно это в свойствах проекта в разделе С/С++ – Command Line – Additional options Я достаточно давно со студией не работаю, только под wince собирал на ней проекты чтобы не мучаться. |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
По первому пункту скорее важен порядок инклюдов в самой студии, хотя не помню уже если студия ругается так C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ContextRecord" это она не находит тип этой переменной. Тогда ставим курсор на тип, жмём F12 - попадаем в заголовочник. Копируем имя его, вставляем перед использованием типа (ну, естественно, желательно в реализацию). И так до профита - иногда долго надо посидеть |
|
|
Гость_Ang_* |
![]()
Сообщение
#7
|
Гости ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 22:45 |