2014-11-22 16 views
5

我试图自己编译Microsoft CRT 11(VS2012随附的版本)。编译Microsoft CRT 11(msvcrt110.dll) - 包含的正确顺序是什么?

我知道,直到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

坚果饼干。这是猜测他们使用的SDK版本。我怀疑windows头文件会像内部函数那样引入东西。 – 2014-11-22 23:26:51

回答

2

你可以在visual studio项目中强制包含(不用更改源代码)(尽管我不确定它是否是更好的解决方案)。

为此,请在解决方案资源管理器中右键单击.c,然后进入C/C++ - >高级 - >强制包含文件并在命令中添加intrin.h(或添加/FI"intrin.h“线)。

相关问题