crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в [msvc] Ошибки компиляции
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Ang Дата 11.2.2020, 1:25
 
Цитата(Алексей1153 @ 27.12.2010, 21:59) *
это она не находит тип этой переменной

не верно, это отключается модификатор для данных, поэтому не проходит типизация

C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(12984): warning C4229: устаревший элемент: пропуск модификаторов для данных
Алексей1153 Дата 27.12.2010, 21:59
 
Цитата(ufna @ 27.12.2010, 23:40) *
По первому пункту скорее важен порядок инклюдов в самой студии, хотя не помню уже

если студия ругается так

Цитата(igor_bogomolov @ 27.12.2010, 4:38) *
C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ContextRecord"

это она не находит тип этой переменной. Тогда ставим курсор на тип, жмём F12 - попадаем в заголовочник. Копируем имя его, вставляем перед использованием типа (ну, естественно, желательно в реализацию). И так до профита - иногда долго надо посидеть
ufna Дата 27.12.2010, 21:40
  Всегда рад ;)

По первому пункту скорее важен порядок инклюдов в самой студии, хотя не помню уже :(

А по второму - обычно это в свойствах проекта в разделе С/С++ – Command Line – Additional options

Я достаточно давно со студией не работаю, только под wince собирал на ней проекты чтобы не мучаться.
igor_bogomolov Дата 27.12.2010, 19:52
  ufna, спасибо add_definitions(-D_X86_) помогло :)
igor_bogomolov Дата 27.12.2010, 10:03
  winnt.h подключается в библиотеке nppapi, при этом не на прямую, а через windef.h. Сами исходники я менять не буду. Попробую инклюдники, что ты написал, в main-файл добавить, может поможет.

По второму пункту не очень понял что сделать нужно. Я до этого msvc не использовал, и сейчас копаться в его настройках как то не хочется. Я генерирую файл проекта при помощи cmake. Правильно ли я понял, что нужно добавить дефайн?
add_definitions(-D_X86_) или add_definitions(-DX86)
ufna Дата 27.12.2010, 6:48
  Я сталкивался в двух проявлениях:

1. В списке инклюдов windows.h и excpt.h должны стоять сразу перед winnt.h

2. Поместить $(_ARCHFAM_) или $(ARCHFAM) в препроцессор definition, или добавить /D "_X86_" или /D "X86" в коммандную строку билда
igor_bogomolov Дата 27.12.2010, 2:38
  Установил впервые в жизни 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: идентификатор не найден

Как с этим бороться?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 10:13