我正在尝试自己编译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>
问题已经解决。但我认为应该能够在不直接修改代码的情况下解决。
当然,我一直面临新的挑战。但我认为解决当前问题的方法是修复头文件目录的包含顺序。头文件目录应该按照什么顺序使用?