【问题标题】:Windows 8 certification requirements: dynamically linking with the runtimeWindows 8 认证要求:与运行时动态链接
【发布时间】:2013-01-07 17:41:27
【问题描述】:

我们的产品包含发送给客户的 DLL。

在提供 Windows 8 版本时,我注意到我无法静态链接到 CRT,否则使用我们 DLL 的应用程序无法通过认证。

我找不到任何提到这一点的文件。有人知道为什么它不可能或如何实现吗?

我们的产品仅使用 malloc/free 和数学函数。静态链接到 CRT 会简单得多,而不是要求链接到我们的每个应用程序都安装正确的 vc redist。 (还有 ffs 为什么不通过 Windows 更新渠道部署 vc redists?)

【问题讨论】:

  • 通过 Windows 更新分发的。好吧,无论如何,安全补丁都是如此。在过去的几年里有很多。这肯定是您被提醒的原因,它确保 Microsoft 可以修复其代码中的安全漏洞。我也没有看到它在需求检查列表中明确列出。
  • 使用 VS2012(无更新 1)构建的可执行文件在未安装 Visual Studio redists 的情况下无法在 Windows 8 上运行

标签: windows-8 visual-studio-2012 static-linking msvcrt


【解决方案1】:

只能使用 VS 2012 和当前的 CRT 构建 Windows 应用商店应用。关键是 Windows Store 应用程序不支持 CRT 的静态链接。

以下是有关 CRT 的更多信息:

Windows 应用商店应用程序、Windows 运行时和 C 运行时 http://msdn.microsoft.com/en-us/library/hh972425.aspx

以下是不支持的 crt 例程列表: http://msdn.microsoft.com/en-us/library/hh674596.aspx

Rob Caplan 在这里写道:

http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/0fa0695f-9828-46ac-985b-5ca15f3bee0a

“如果您的 lib 链接到符合 Metro 风格应用程序的 C 运行时,您将能够调用标准 C 函数,例如 fopen。您可以针对 App Cert Kit 进行测试以确认。早于 VC 2012 的运行时将无法工作.

您的应用仍将受制于安全沙箱,并且无法访问其应用数据和包之外的目录。”

【讨论】:

  • 这是否意味着当您要构建桌面应用程序时可以静态链接到 CRT (/MT)?
猜你喜欢
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
相关资源
最近更新 更多