Подтвердить что ты не робот

Ошибка C1189 после установки Visual Studio 2010

Я установил VS2010 после сбоя диска, раньше у меня был VS2005, и все было в порядке.

Теперь при компиляции С++-приложения, которое было хорошо, я вижу пару ошибок, которые я просто не могу понять.

Ошибка 1 ошибка C1189: #error: для этого файла требуется _WIN32_WINNT для #defined по крайней мере до 0x0403. Рекомендуется использовать значение 0x0501 или выше. C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcore.h 35 1 BIOXGINA

#ifndef __ATLCORE_H__
#define __ATLCORE_H__

#pragma once

#ifdef _ATL_ALL_WARNINGS
#pragma warning( push )
#endif

#pragma warning(disable: 4786) // identifier was truncated in the debug information
#pragma warning(disable: 4127) // constant expression

#include <atldef.h>
#include <windows.h>
#include <ole2.h>

#include <limits.h>
#include <tchar.h>
#include <mbstring.h>

#include <atlchecked.h>
#include <atlsimpcoll.h>

34.  #if _WIN32_WINNT < 0x0403
35.  #error This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.
36.  #endif

#pragma pack(push,_ATL_PACKING)
namespace ATL
{
/////////////////////////////////////////////////////////////////////////////
// Verify that a null-terminated string points to valid memory
inline BOOL AtlIsValidString(
_In_z_count_(nMaxLength) LPCWSTR psz,
_In_ size_t nMaxLength = INT_MAX)
{
(nMaxLength);
return (psz != NULL);
}

Если я прокомментирую вышеприведенные строки, я получаю

ошибка C3861 Идентификатор не найден в строке 111 ниже.

Я предполагаю, что я получаю это только потому, что прокомментировал вышеприведенные строки?

HRESULT Init() throw()
{
    HRESULT hRes = S_OK;

111.        if (!InitializeCriticalSectionAndSpinCount(&m_sec, 0))
    {
        hRes = HRESULT_FROM_WIN32(GetLastError());
    }

    return hRes;
}

Буду признателен за любую помощь в этом. Не хотите переустанавливать 2005 год.

4b9b3361

Ответ 2

Ваш проект нацелен на версию Windows, которая больше не поддерживается новым компилятором (или чем-либо еще).

Вы должны выбрать минимальную целевую версию, которая является Windows XP ( "Windows 5" ) или более поздней.

Ответ 3

Спасибо вам за ответы.

Мне удалось избавиться от сообщения об ошибке следующим образом. Context.h понравилось.

  #pragma once

  #define _WIN32_WINNT 0x0400

  #include <windows.h>
  #include <winwlx.h>
  #include <ObjBase.h>
  #include <comdef.h>
  #include <atlbase.h>

  extern CComModule _Module;

  #include <atlcom.h>
  #include <vector>

Я переместил #define _WIN32_WINNT 0x0400, а затем закончил после всех включений и скомпилировал Ok. Странно, но это сработало.

Я, однако, изменю его на 0x0502.

спасибо

Ответ 4

Свойство проекта → Свойства конфигурации → C/С++ → Командная строка → Дополнительные параметры : Добавьте этот код

/D "_WIN32_WINNT = 0 × 0501"

если на сервере Windows 2003,0 × 0501chagnes до 0 × 0502; если в Windows 7, 0 × 0501chagnes до 0 × 0601

хорошо работает