2014-11-22 5 views
5

Ich versuche, den Microsoft CRT 11 selbst zu kompilieren (Die Version, die mit VS2012 kommt).Kompilieren von Microsoft CRT 11 (msvcrt110.dll) - Was ist die richtige Reihenfolge der Includes?

Ich bin mir bewusst, dass diese Aktion bis VS2008 vollständig von Microsoft unterstützt wurde:

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

Aber da VS2010 Sie es nicht sollen mehr tun, und ich bin der Risiken bewusst (vor allem - Kompilieren es falsch, und Probleme haben, dass Sie nicht verstehen können oder lösen)

ich die folgenden Verzeichnisse bin mit, die als Eingabecode und Header-Dateien mit VS kommen:

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 

(Bisher sind die einzigen Änderungen, die ich vorgenommen habe, einige MSIL-Quellen aus dem Projekt zu entfernen)

Der Großteil des Codes kompiliert bereits. Aber ich kann die Datei

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

Wegen der Fehler nicht kompilieren:

error C3861: '_ReturnAddress': identifier not found 

Wenn ich hinzufügen

#include <intrin.h> 

es gelöst ist. Aber ich denke, dass es ohne direkte Änderungen am Code lösbar sein soll.

Natürlich bin ich vor immer neue Herausforderungen. Aber ich denke, die Lösung für die aktuelle Lösung besteht darin, die Include-Reihenfolge der Header-Verzeichnisse zu korrigieren. In welcher Reihenfolge sollen die Header-Verzeichnisse verwendet werden?

+0

Tough Cookies. Es ist eine Vermutung, welche SDK-Version sie verwendet haben. Ich vermute, dass die Windows-Header Dinge wie Intrinsics hineinziehen. –

Antwort

2

Sie können ein Include erzwingen (ohne den Quellcode zu ändern) im Visual Studio-Projekt (obwohl ich nicht sicher bin, ob es eine bessere Lösung ist).

Sie dazu einen Rechtsklick auf die .c in der Lösung Explorer in C gehen dann/C++ -> Erweitert -> Force-Include-Datei und fügen Sie intrin.h (oder fügen Sie /FI"intrin.h“in dem Befehl Linie).

Verwandte Themen