我正在尝试自己编译Microsoft CRT 11(VS2012附带的版本)。
我知道在VS2008之前,微软完全支持这一行动:
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>
它解决了。但我认为如果没有对代码进行直接更改,它应该是可以解决的。
当然,我一直面临着新的挑战。但我认为当前的解决方案是修复头目录的包含顺序。使用头目录的顺序是什么?
答案 0 :(得分:2)
您可以在visual studio项目中强制包含(不更改源代码)(虽然我不确定它是否是更好的解决方案)。
为此,右键单击解决方案资源管理器中的.c,然后进入C / C ++ - &gt;高级 - &gt;强制包含文件并添加intrin.h(或在命令行中添加/FI"intrin.h“)。