Я пытаюсь самостоятельно скомпилировать 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>
это решено. Но я думаю, что это должно быть решаемо без прямых изменений в коде.
Конечно, я постоянно сталкиваюсь с новыми проблемами. Но я думаю, что решение текущей проблемы состоит в том, чтобы исправить порядок включения каталогов заголовков. В каком порядке следует использовать каталоги заголовков?