error C2065: “LOAD_LIBRARY_SEARCH_SYSTEM32”
来源:互联网 发布:怎样用手机链接软件 编辑:程序博客网 时间:2024/06/05 06:43
VS2010切换至110_xp后编译报错 error C2065: “LOAD_LIBRARY_SEARCH_SYSTEM32”
最近使用vs2012(打补丁到Update5)开发基于ATL的项目出现了这个编译错误。而且只有一条,到网上搜索了半天也没有真正说明问题,只有自己来了。找到相关报错如下:
1>------ Build started: Project: Win32Project1, Configuration: Debug Win32 ------1> stdafx.cpp1>c:\program files (x86)\microsoft visual studio 11.0\vc\atlmfc\include\atlcore.h(632): error C2065: 'LOAD_LIBRARY_SEARCH_SYSTEM32' : undeclared identifier========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
对应的代码如下:
inline HMODULE AtlLoadSystemLibraryUsingFullPath(_In_z_ const WCHAR *pszLibrary){#if (NTDDI_VERSION >= NTDDI_WIN8) return(::LoadLibraryExW(pszLibrary, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32));#else WCHAR wszLoadPath[MAX_PATH+1]; if (::GetSystemDirectoryW(wszLoadPath, _countof(wszLoadPath)) == 0) { return NULL; ... 后面的就省略了#endif
关键可以看到 NTDDI_VERSION >= NTDDI_WIN8 这个表达式,既然选择了编译到 WINXP 这个表达式如何也不可能成立呀。
逐一打印 发现 NTDDI_VERSION,和 NTDDI_WIN8, 居然 NTDDI_WIN8 是空。此时再分析一下,就找到问题了:
- 使用Platform Tool 为 110_xp 时指向C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A
- 使用Platform Tool 为 110 的时候 C:\Program Files (x86)\Windows Kits\8.0
- 而 NTDDI_WIN8 在 v7.1A 版本中 没有定义,只定义到 NTDDI_WIN7。
接下来就好办了问题原因找到了,那么自然就好办了。
方法一:
在 stdafx.h 中在调用 atlbase.h 之前,加入对 NTDDI_WIN8 的定义。
#ifndef NTDDI_WIN8#define NTDDI_WIN8 0x06020000#endif
方法二:
直接修改 v7.1A 的版本的 SDKDDKVer.h line 131
#define NTDDI_WIN8 0x06020000
整个问题其实很简单,但是遇到问题就百度的习惯,让自己先绕了远路,留下这篇来提醒一下自己吧。
有价值的参考不多:
http://www.vcerror.com/?p=1101
- error C2065: “LOAD_LIBRARY_SEARCH_SYSTEM32”
- error C2065: “LOAD_LIBRARY_SEARCH_SYSTEM32”: 未声明的标识符
- error C2065
- error C2065: “IDD_
- error C2065的解决办法
- error C2065: DEBUG_NEW错误
- error C2065: “IDD_DIALOG1”
- 编译错误:error C2065
- error C2065: “GL_SAMPLE_BUFFERS_ARB
- error C2065的解决办法
- error C2065: '_beginthread' : undeclared identifier
- error C2065: 'IDD_SHOWINFODLG' : undeclared identifier
- error C2065: 'CComVariant' : undeclared identifier
- error C2065: 'CArchiveStream' : undeclared identifier
- error C2065: 'getCmdBuf1' : undeclared identifier
- error C2065: 'DEBUG_NEW' : undeclared identifier?
- error C2065: 'NULL' : undeclared identifier
- error C2065: 'pcap_findalldevs_ex' : undeclared identifier
- axios 优质文章汇总
- MyEclipse配置Hibernate
- express 优质文章汇总
- ionic2项目开发日志 -- 01创建项目
- 51 Nod1432独木舟
- error C2065: “LOAD_LIBRARY_SEARCH_SYSTEM32”
- 日志记录异常堆栈详细信息
- Docker中的image和container
- JavaIO总结
- 什么时候选择TCP,什么时候选择UDP?
- TCP是如何保证可靠数据传输的?
- 使用httpurlconnection发送http请求
- Vuejs2.0 组件与组件之间的通信
- C/C++头文件