Visual Studio Community 2015 MFC 空项目无法编译

Posted

技术标签:

【中文标题】Visual Studio Community 2015 MFC 空项目无法编译【英文标题】:Visual Studio Community 2015 MFC empty project doesn't compile 【发布时间】:2016-01-13 11:28:10 【问题描述】:

我刚刚安装了 Visual Studio Community 2015(版本 14.0.24720.00)并尝试创建一个基于 MFC 对话框的项目。 在向导中,我只选择了“基于对话框”,将所有其他设置保留为默认设置。

该项目根本无法编译,这并不是一个有前途的起点...

我是否忽略了什么? MFC模板坏了吗?

下面是我得到的编译时错误(为了便于阅读,我剪掉了长路径)。

感谢您的宝贵时间。

program files (x86)\microsoft visual studio 14.01>------ Build started: Project: MFCApplication, Configuration: Debug Win32 ------

1>  stdafx.cpp

1>c:\[...omissis...]\atlcore.h(639): error C2065: 'LOAD_LIBRARY_SEARCH_SYSTEM32': undeclared identifier

1>c:\[...omissis...]\uianimation.h(2621): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxanimationhelper.h(411): error C2065: 'UI_E_VALUE_NOT_SET': undeclared identifier

1>c:\[...omissis...]\afxanimationhelper.h(441): error C2065: 'UI_E_VALUE_NOT_SET': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2103): error C3646: 'm_pConfigs': unknown override specifier

1>c:\[...omissis...]\afxwin.h(2103): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxwin.h(2024): error C2065: 'GC_PAN_WITH_GUTTER': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2024): error C2065: 'GC_PAN_WITH_INERTIA': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2088): error C2065: 'GC_ALLGESTURES': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2030): error C2065: 'GID_ZOOM': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2030): error C2065: 'GC_ZOOM': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2036): error C2065: 'GID_ROTATE': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2036): error C2065: 'GC_ROTATE': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2042): error C2065: 'GID_TWOFINGERTAP': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2042): error C2065: 'GC_TWOFINGERTAP': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2056): error C2065: 'GID_PAN': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2056): error C2065: 'GC_PAN': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2062): error C2065: 'GID_PAN': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2062): error C2065: 'GC_PAN_WITH_SINGLE_FINGER_VERTICALLY': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2068): error C2065: 'GID_PAN': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2068): error C2065: 'GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2074): error C2065: 'GID_PAN': undeclared identifier

1>c:\[...omissis...]\afxw
in.h(2074): error C2065: 'GC_PAN_WITH_GUTTER': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2080): error C2065: 'GID_PAN': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2080): error C2065: 'GC_PAN_WITH_INERTIA': undeclared identifier

1>c:\[...omissis...]\afxwin.h(2964): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxwin.h(2964): error C3646: 'GetCurrentGestureInfo': unknown override specifier

1>c:\[...omissis...]\afxwin.h(2964): error C2059: syntax error: ')'

1>c:\[...omissis...]\afxwin.h(2965): error C2334: unexpected token(s) preceding ''; skipping apparent function body

1>c:\[...omissis...]\afxwin.h(3020): error C2061: syntax error: identifier 'PTOUCHINPUT'

1>c:\[...omissis...]\afxwin.h(3030): error C2061: syntax error: identifier 'PTOUCHINPUT'

1>c:\[...omissis...]\afxwin.h(3043): error C3646: 'm_pCurrentGestureInfo': unknown override specifier

1>c:\[...omissis...]\afxwin.h(3043): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxwin.h(4141): error C2061: syntax error: identifier 'TBPFLAG'

1>c:\[...omissis...]\afxwin.h(5447): error C2143: syntax error: missing ';' before '*'

1>c:\[...omissis...]\afxwin.h(5447): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxwin.h(5447): error C2238: unexpected token(s) preceding ';'

1>c:\[...omissis...]\afxglobals.h(315): error C2143: syntax error: missing ';' before '*'

1>c:\[...omissis...]\afxglobals.h(315): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxglobals.h(315): error C2238: unexpected token(s) preceding ';'

1>c:\[...omissis...]\afxadv.h(244): error C2143: syntax error: missing ';' before '*'
1>c:\[...omissis...]\afxadv.h(244): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\[...omissis...]\afxadv.h(245): error C2334: unexpected token(s) preceding ''; skipping apparent function body

1>c:\[...omissis...]\afxadv.h(314): error C2061: syntax error: identifier 'KNOWNDESTCATEGORY'

1>c:\[...omissis...]\afxadv.h(390): error C2065: 'ICustomDestinationList': undeclared identifier

1>c:\[...omissis...]\afxadv.h(390): error C2923: 'ATL::CComPtr': 'ICustomDestinationList' is not a valid template type argument for parameter 'T'

1>c:\[...omissis...]\afxadv.h(273): error C2039: 'AbortList': is not a member of 'ATL::_NoAddRefReleaseOnCComPtr<T>'

1>c:\[...omissis...]\afxadv.h(428): error C2065: 'IApplicationDestinations': undeclared identifier

1>c:\[...omissis...]\afxadv.h(428): error C2923: 'ATL::CComPtr': 'IApplicationDestinations' is not a valid template type argument for parameter 'T'

1>c:\[...omissis...]\afxadv.h(430): warning C4624: 'CAppDestinations': destructor was implicitly defined as deleted

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

【问题讨论】:

第一个错误在return(::LoadLibraryExW(pszLibrary, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)); 行中,上面一行中的#if (_ATL_NTDDI_MIN &gt; NTDDI_WIN7) 有条件地排除了我...无论如何,该常量在libloaderapi.h 中定义,在@ 中找到987654325@ 在我的系统上。你有那个文件吗(我猜你有,否则错误会有所不同)?在哪里? 嗨弗拉德。是的,我的系统上有该文件,该文件夹位于该项目的“包含目录”(评估值)中。我在第 410 行看到了定义 #define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 我认为 VS 配置有问题(我从昨天开始使用 VS2009 :( )感谢您的宝贵时间 好像是继承自VS2008设置的问题... 【参考方案1】:

解决了。 Visual Studio 2015 继承了 Visual Studio 2009 设置。 删除包含文件夹

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include

一切正常

【讨论】:

【参考方案2】:

在将 2010 年提前到 2015 年时遇到了类似的问题。将问题追溯到 targetver.h 文件。它正在定义旧版本的 Windows。用当前默认值替换了所有以前的定义。

target.h
   // delete everything here
   #include <SDKDDKVer.h>

-- end of target.h

【讨论】:

【参考方案3】:

也许这可以帮助您解决问题。 在 Visual Studio 2015 中,默认情况下不再安装 C++ 工具。相反,C++ 编译器、库和项目模板已移至可选功能中。启动设置后,您可以选择“典型”或“自定义”安装; 如果选择“典型”,则不能使用 Visual Studio 进行 C++ 开发,因为只会安装托管语言和 Web 开发工具。 Setup Changes in Visual Studio 2015 Affecting C++ Developers

【讨论】:

以上是关于Visual Studio Community 2015 MFC 空项目无法编译的主要内容,如果未能解决你的问题,请参考以下文章

2015版Visual Studio Code和Visual Studio Community的区别

Visual Studio community 开发者个人免费版安装教程

Visual Studio community 开发者个人免费版安装教程

Visual Studio 2010 Express 与 Community 2015 兼容?

Visual Studio community 开发者个人免费版安装教程

如何在 Visual Studio 2015 Community 中创建本地数据库?