Ошибка 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 год.
Ответы
Ответ 1
Этот вопрос Microsoft Connect имеет это потенциальное решение:
отредактировать файл "stdafx.h" и изменить значение, определенное для _WIN32_WINNT и WINVER, до 0x0502.
Подробнее об этой ошибке на форуме MSDN С++: проблема с более старым решением VC.
Ответ 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
хорошо работает