【发布时间】:2014-11-22 23:20:24
【问题描述】:
我正在尝试自己编译Microsoft CRT 11(VS2012附带的版本)。
我知道在 VS2008 之前,此操作完全得到 Microsoft 的支持:
http://msdn.microsoft.com/en-us/library/k9a8ehy3(v=vs.90).aspx
但是自从 VS2010 以来,你不应该再这样做了,我知道有风险(主要是 - 编译错误,并且有你无法解决或解决的问题)
我使用VS自带的以下目录作为输入代码和头文件:
Code:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src
Headers:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
C:\Program Files (x86)\Windows Kits\8.0\Include\shared
C:\Program Files (x86)\Windows Kits\8.0\Include\um
C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT
(到目前为止,我所做的唯一更改是从项目中删除了一些 MSIL 源)
大部分代码已经编译。但我无法编译文件
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\assert.c
因为错误:
error C3861: '_ReturnAddress': identifier not found
如果我添加
#include <intrin.h>
解决了。但我认为它应该可以在不直接更改代码的情况下解决。
当然,我不断面临新的挑战。但我认为当前的解决方案是修复头目录的包含顺序。头目录应该按什么顺序使用?
【问题讨论】:
-
硬饼干。猜测他们使用的是什么 SDK 版本。我怀疑 Windows 标头会引入一些东西,比如内在函数。
标签: c++ visual-studio-2010 visual-studio-2012 msvcrt crt