本文介绍了atlwin.h 中的编译器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 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 中的编译器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 05:24