Po uruchomieniu w podobnych problemów po raz kolejny z VS2017 Wziąłem bliżej przyjrzeć się, co było przyczyną tego wszystkiego. Głównym powodem było to, że wciąż używałem zmodyfikowanych plików user.props. Które było przez jakiś czas rozwiązaniem dodawania globalnych ścieżek dostępu i bibliotek do wszystkich projektów. Ta funkcja jest jednak przestarzała przez firmę Microsoft, a zawartość tych plików powinna zostać zresetowana.
Pliki, o których mówię, to pliki user.props w C: \ Users \ twoja_nazwa \ AppData \ Local \ Microsoft \ MSBuild \ v4.0 Do testowania możesz po prostu zmienić nazwę (lub usunąć, jeśli lubisz ryzyko) je i uruchom ponownie VS. Stworzy teraz puste pliki dla tych osób. A jeśli korzystasz z systemu Windows 10, w większości przypadków wystarczy, aby rozwiązać wszystkie problemy. Nawet w starszych wersjach VS (testowałem z VS2010-VS2017, nawet w starszych wersjach VS problemy zazwyczaj dotyczą kluczy rejestru i nie zawierają plików rekwizytów). Windows/VS stał się teraz naprawdę dobry w znajdowaniu wszystkich bibliotek systemowych (w tym DirectX, który był głównym powodem, dla którego musieliśmy zmodyfikować te pliki w przeszłości) i dodaniu ich do właściwej kolejności włączania.
Ostrzegam także, że widziałem, jak polecają to inne osoby. Wykonaj , a nie zmień dowolny plik .prop zainstalowany przez SDK. Jeśli naprawdę potrzebujesz pracować z rekwizytami, stwórz i dodaj własne arkusze właściwości (które mogą nadpisać wszelkie wartości domyślne) do twojego projektu. I nie martw się, nie będą one kontrolowane przez źródło, więc nadal będziesz mógł rozpowszechniać swój projekt na innych.
Jeśli nadal na starszym systemie Windows może nie być tak proste, jak w systemie Windows 10, ale postaram się podać kilka wskazówek:
Czego brakuje w tym betonowym błędu jest nowa $ UniversalCRT_IncludePath . Nie ma potrzeby, aby kodować tę ścieżkę, to makro powinno zawierać poprawną. Więc dodaj $ (UniversalCRT_IncludePath); do IncludePath we własnej nieruchomości, którą dodajesz do projektu.
A dla LibraryPath dodaj poprawną ścieżkę na plik platformy, np. $ (UniversalCRT_LibraryPath_x64); dla .x64. i $ (UniversalCRT_LibraryPath_x86); dla .Win32.
Co może być przydatne, gdy próbujemy to naprawić: Możesz dowiedzieć się wartości wszystkich zmiennych $ (MAKRO) używanych w systemie kompilacji wewnątrz VisualStudio. Są po prostu bardzo dobrze ukryte: Przejdź do właściwości - niestandardowe kroki kompilacji - kliknij w wierszu poleceń - wtedy nie wpisuj niczego, ale kliknij przycisk w dół, aby uzyskać "edytuj ..." - kliknij to - pojawi się okno dialogowe, które ma przycisk "Makra >>". I że zawiera listę wszystkich wartości makr.
Co to jest rozszerzenie pliku? Jakiego języka powiedziałeś VS2015 do używania, C lub C++? 'Stdio.h' jest używany głównie przez język C. –
Należy także rozważyć niestosowanie 'stdafx.h' chyba że napisanie ogromnego programu i proces kompilacji zajmie wiele godzin; w przeciwnym razie powoduje więcej kłopotów. –
@ThomasMatthews C++. W moim programie użyłem #include stdafx.h. – Harpo