【问题标题】:How can I build VS 2010's C Runtime Library?如何构建 VS 2010 的 C 运行时库?
【发布时间】:2011-03-28 15:07:26
【问题描述】:

我需要修改 VS2010 附带的 C 运行时,因为 2010 CRT 依赖于 Windows XP SP2 中发布的功能,并且我需要能够部署到 Windows 2000。

具体来说,我需要删除对EncodePointerDecodePointer 的所有调用。

C 运行时的源代码包含在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src 中,因此在稍微修改源代码后似乎应该可以构建运行时。

哦,我不需要能够构建运行时的动态版本——只有静态版本。 (我也不能指望用户在他们的系统上安装 CRT)。

对于 VS2008 及更早版本,MSDN 中有一个教程描述了如何构建 CRT,但我似乎找不到 2010 年的。

这样的事情可能吗?

【问题讨论】:

  • @Clark:不,这个问题是关于在 VS2010 中使用 VS2008 的 CRT。这里是问能不能用VS2010的CRT,但是自己修改去掉依赖。
  • 他们当然似乎在尽最大努力阻止它,如果不是完全阻止它的话。你需要转变心态,成为“IDE用户”而不是程序员。
  • 不,你不需要构建 CRT 来做你需要的事情。您只需要替换 EncodePointer 和 DecodePointer,这非常容易做到。在您的其他问题中查看我的回答。
  • 正如您所说:“对于 VS2008 及更早版本,MSDN 中有一个教程描述了如何构建 CRT”。我需要链接。很难找到。

标签: c++ visual-c++ visual-studio-2010


【解决方案1】:

这是MSDN link。看来你必须在VS2010中自己做。

您可以使用以下编译器和链接器选项来重建 MFC、CRT 和 ATL 库。从 Visual C++ 2010 开始,不再提供用于重建这些库的脚本。

【讨论】:

  • 该死的。所以基本上我搞砸了。 :(
  • @Billy:与其说是面对自己建立一个项目来构建 CRT 的苦差事,不如说是搞砸了。
  • 是的,但我不知道哪些文件实际上在 CRT 中。这使得设置项目变得困难。
  • 这个答案后来解决了吗?我正在尝试与 CRT 11 类似的东西
【解决方案2】:

如果可以选择,我会考虑在 VS2010 中使用 VC++ 2008 工具集,而不是构建自定义 CRT。该过程解释here

【讨论】:

  • 这就是我已经在做的事情。真正令人讨厌的原因是我想使用像 std::unique_ptr 这样的东西并移动语义,这些东西只有 VS 2010 的编译器才可用。
  • 我同意,我提到这个解决方案只是为了防止你没有想到它。祝你好运。
【解决方案3】:

“哦,我不需要能够构建运行时的动态版本——只有静态版本。”

由于您只需要静态链接,您可以尝试this技巧来提供EncodePointer和DecodePointer的实现。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多