2014-11-22 27 views
5

Próbuję samodzielnie skompilować Microsoft CRT 11 (wersja dostarczana wraz z VS2012).Kompilowanie Microsoft CRT 11 (msvcrt110.dll) - Jaka jest prawidłowa kolejność włączeń?

Jestem świadomy, że do VS2008 akcja ta została całkowicie obsługiwane przez firmę Microsoft:

http://msdn.microsoft.com/en-us/library/k9a8ehy3(v=vs.90).aspx

Ale ponieważ VS2010 nie mają już tego robić, i jestem świadomy ryzyka (głównie - kompilacji to źle, a problemy, których nie można ustalić lub rozwiązać)

Używam następujące katalogi, które pochodzą z VS jako kod i nagłówków plików wejściowych:

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 

(Do tej pory jedyne zmiany, jakie wprowadziłem, to usunięcie niektórych źródeł MSIL z projektu)

Większość kodu już się kompiluje. Ale nie mogę skompilować plik

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\assert.c 

powodu błędu:

error C3861: '_ReturnAddress': identifier not found 

Jeśli dodać

#include <intrin.h> 

jest rozwiązany. Ale myślę, że to powinno być możliwe do rozwiązania bez bezpośrednich zmian w kodzie.

Oczywiście stale stawiam czoła nowym wyzwaniom. Ale myślę, że rozwiązaniem obecnego jest naprawienie kolejności włączania katalogów nagłówków. W jakiej kolejności powinny być używane katalogi nagłówków?

+0

Trudne ciasteczka. To jest wersja, której użyli SDK. Podejrzewam, że nagłówki okien wciągają różne rzeczy, takie jak intrinsics. –

Odpowiedz

2

Możesz wymusić uwzględnienie (bez zmiany kodu źródłowego) w projekcie wizualnym studio (choć nie jestem pewien, czy jest to lepsze rozwiązanie).

Aby to zrobić, kliknij prawym przyciskiem myszy .c w eksploratorze rozwiązań, a następnie przejdź do C/C++ -> Zaawansowane -> Wymuś uwzględnienie pliku i dodaj intrin.h (lub dodaj /FI"intrin.h "do polecenia linia).