找不到标识符 FindFirstFile
Posted
技术标签:
【中文标题】找不到标识符 FindFirstFile【英文标题】:Identifier not found FindFirstFile 【发布时间】:2015-08-27 03:24:52 【问题描述】:我正在尝试使用 Windows API 中的 FindFirstFile 函数,我以前使用过它,但现在找不到了。它只是告诉我找不到标识符。我有 FindFirstFileExW、FindFirstFileExA 和 FindFirstFileEx 的其他变体,但我没有 FindFirstFile。我什至可以包含它应该在 FileAPI.h 中的特定标头。我在here 上读到了类似的问题,我应该在 windows.h 之前包含 stdafx.h 但我什至找不到 stdafx.h。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx
如果你不能回答这个问题,可以描述一下如何使用 FindFirstFileEx 来做与 FindFirstFile 相同的事情,因为 FindFirstFileEx 在 msdn 上被描述为具有更多属性的 FindFirstFile。
【问题讨论】:
您使用哪个编译器?什么版本?例如是 Visual Studio 2013 吗? @BarmakShemirani vs2015 (v140) 这毫无意义。FindFirstFile
和 FindFirstFileEx
在同一个头文件中。 include "windows.h"
应该足够了。你可能需要也可能不需要"stdafx.h"
如果 VS2015 没有抱怨它,那么你就不需要它。也许项目设置搞砸了。如果您没有大型项目,则创建一个新的 Win32 项目。以防万一是 IntelliSense 在抱怨,那么您可以忽略它。
请确定您使用的是哪个平台。你用winapi
和win-universal-app
标记了这个,但它们是不同的。 FindFirstFile
是 winapi
函数,但不是 win-universal-app
函数。对于win-universal-app
,您使用StorageFolder.GetItemsAsync
。
@AndrewWilson - 只需在documentation 中查找它,它会告诉您如何使用FindFileEx
,甚至包括一个提供与使用FindFile
相同的输出的示例。这些天来的孩子们不知道他们有多么容易得到它 - 从前我们不得不花几个小时在图书馆里阅读纸质书籍。现在,您的网络触手可及。 (Rob Schneider 声音)你可以做到的!
【参考方案1】:
FindFirstFile
is documented as
支持的最低客户端:Windows XP [仅限桌面应用程序]
该 API 不适用于通用应用。通用等价物是StorageFolder.GetItemsAsync
。
【讨论】:
【参考方案2】:根据APIs present on all Windows 10 devices,FindFirstFile
存在于版本10.0.14393.0
的Windows 10 中,而FindFirstFileEx
来自版本10.0.10240.0
。 14393 is the Anniversary Update 和 10240 来自“阈值 1”,又名 RTM,又名“版本 1507”。因此,您可能拥有旧版本的 Windows API。我不确定为什么微软会包含一个功能而不包含另一个功能,而这两个功能以前都可用 - 也许只是一个疏忽?
因此,您最简单的解决方案是升级到 Windows 10 周年更新或更高版本。
如果做不到这一点,这也是一个非常简单的代码更改。根据TFM:
以下调用:
FindFirstFileEx( lpFileName, FindExInfoStandard, lpFindData, FindExSearchNameMatch, NULL, 0 );
相当于下面的调用:
FindFirstFile( lpFileName, lpFindData );
【讨论】:
以上是关于找不到标识符 FindFirstFile的主要内容,如果未能解决你的问题,请参考以下文章
MFC “DockPane”: 找不到标识符 求解(CDockablePane的)