加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

使用Windows 8 SDK编译Windows 7

发布时间:2020-12-13 20:44:06 所属栏目:Windows 来源:网络整理
导读:(这个问题以zlib为例,但不是特定的.) 我正在尝试使用它附带的MSVC项目文件在Windows上编译zlib.我正在使用VS2012和Windows 8 SDK,但我的构建机器是Windows 7. Zlib包含以下代码: #ifdef IOWIN32_USING_WINRT_API if ((filename!=NULL) (dwDesiredAccess !=
(这个问题以zlib为例,但不是特定的.)

我正在尝试使用它附带的MSVC项目文件在Windows上编译zlib.我正在使用VS2012和Windows 8 SDK,但我的构建机器是Windows 7.

Zlib包含以下代码:

#ifdef IOWIN32_USING_WINRT_API
    if ((filename!=NULL) && (dwDesiredAccess != 0))
        hFile = CreateFile2((LPCTSTR)filename,dwDesiredAccess,dwShareMode,dwCreationDisposition,NULL);
#else
    if ((filename!=NULL) && (dwDesiredAccess != 0))
        hFile = CreateFile((LPCTSTR)filename,NULL,dwFlagsAndAttributes,NULL);
#endif

其中IOWIN32_USING_WINRT_API设置如下

#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define IOWIN32_USING_WINRT_API 1
#endif
#endif

WINAPI_FAMILY_PARTITION和WINAPI_PARTITION_APP在Windows 8 SDK(winapifamily.h)中定义,因此结果是可以编译在zlib中使用CreateFile2的代码.

我可以编译zlib,但是任何尝试加载它的应用程序都会失败,因为它找不到CreateFile2,这是正确的,因为我的机器是Windows 7并且该API是在Windows 8中引入的.

这是我第一次在较低版本的Windows上使用Windows SDK而不是它支持,因此我的问题是:

我唯一可以使用补丁zlib来检查_WIN32_WINNT> = _WIN32_WINNT_WIN8到第一行,并将/ D_WIN32_WINNT = _WIN32_WINNT_WIN7传递给msbuild?这意味着我必须构建两组二进制文件 – 一组支持Win7(通过传递/ D)和一组支持Win8(不传递/ D).

是否没有办法在Windows 7和8上运行兼容的公共二进制文件,如果在Windows 8上运行,则使用CreateFile2代码路径? (我想这种方式是GetProcAddress函数指针.还有别的吗?)

您可以使用_WIN32_WINNT选择要定位的操作系统版本.这是破解的zlib检查. WINAPI_FAMILY_DESKTOP_APP包含WINAPI_FAMILY_APP,因此它们的检查总是成功.您可以修复它:
#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
#if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY_DESKTOP_APP,WINAPI_PARTITION_APP)
#define IOWIN32_USING_WINRT_API 1
#endif
#endif

有关详细信息,请参阅此处:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/3965645c-978c-4148-b32c-1853f7fd22b3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读