问题描述
在 Visual Studio 2013 构建中包含来自 Microsoft ATL 库的 atlwin.h 时,将导致大量关于未定义元素的编译器错误.
即
#include 类 MainWnd : public CWindowImpl{};
CWindowImpl:未定义基类"错误.
或
HMONITOR 未定义
使用 VS2010 构建时不会发生这种情况.
我该如何解决?
问题在于 stdafx.h 文件中的目标版本的 windows
来自 MSDN
Visual C++ 不再支持面向 Windows 95、Windows 98、Windows ME 或 Windows NT.如果您的 WINVER 或 _WIN32_WINNT 宏是分配给这些版本的 Windows 之一,您必须修改宏.当您升级使用较早版本的 Visual C++,您可能会看到相关的编译错误到 WINVER 或 _WIN32_WINNT 宏,如果它们被分配给一个版本不再支持的 Windows.
所以,改变
#ifndef WINVER#define WINVER 0x0400#万一
到
#ifndef WINVER#define WINVER 0x0500#define _WIN32_WINNT 0x0500#万一
纠正构建问题
When including atlwin.h from the Microsoft ATL libraries in Visual Studio 2013 building will result in numerous complier errors about undefined elements.
i.e.
#include <atlwin.h>
class MainWnd : public CWindowImpl<MainWnd>
{};
or
This does not occur when building using VS2010.
How can I fix that?
The problem is with the targeted version of windows in the stdafx.h file
from MSDN
So, changing
#ifndef WINVER
#define WINVER 0x0400
#endif
to
#ifndef WINVER
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#endif
corrects the build problem
这篇关于atlwin.h 中的编译器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!