2013-07-02 11 views
9

Mam wspólny błąd fatal error C1083: Cannot open include file: 'afxres.h': No such file or directory. Wyszukiwarki pokazują wiele trafień, ale żadne z sugerowanych rozwiązań nie działa dla mnie.Visual Studio 2012: kompilator C++ ignorujący katalogi określone przez użytkownika

Zwykle wydaje się, że jest to problem związany ze ścieżkami. Tak więc upewniłem się, że odpowiednie biblioteki zostały zainstalowane i zlokalizowałem plik. Korzystanie bezwzględną ścieżkę jak #include działa dobrze:

#include "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxres.h"

Ale jeśli dodać do katalogu (C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ atlmfc \ include) do ustawienia projektu (lub do Microsoft.Cpp.Win32.User arkuszu właściwości), a następnie spróbuj tej linii:

#include "afxres.h"

pojawia się błąd C1083 ponownie. Jednak Visual Studio wyraźnie może znaleźć plik - jeśli kliknę prawym przyciskiem myszy na nazwę pliku i wybierz "Otwórz dokument" afxres.h "", to natychmiast go otworzy!

Dlaczego program Visual Studio miałby ignorować podaną ścieżkę #include? Inne #include ścieżki, które zawarłem w podobny sposób działają doskonale.

Directory is explicitly included in the build settings

+0

O ile mi wiadomo, afxres.h powinien być specyficzny dla aplikacji; nie jest to standardowa biblioteka zawiera, jest generowana do korzystania z zasobów w projekcie – HLL

+0

Nie można przetestować, ponieważ nie jestem w systemie Windows w tych dniach, ale spróbuj ** Narzędzia> Opcje> Katalogi ** –

+1

@hll 'afxres.h 'jest dołączone do MFC. –

Odpowiedz

4

ale ja miałem Visual C++ 2010 Express na tu wcześniej, z których wydaje się, że importowane niektóre ustawienia

To był zasadniczy komentarz. Express nie obsługuje ATL i MFC. Wciąż brakuje tego problemu tylko w projektach, które wcześniej uruchomiłeś w VS2010.

Należy zauważyć, że dodanie ścieżki takiej jak w arkuszu właściwości projektu nie było konieczne. Widoczny na ekranie, jest już objęty wpisem w odziedziczonych właściwościach. Tak więc wniosek do wyciągnięcia jest taki, że wartość makra $ (VCInstallDir) jest błędna.

Krótko po instalacji lub przypadkowym rejestrze, może się to zdarzyć po przekonwertowaniu projektu, który wcześniej został uruchomiony w VS2010. Przełącz się z Menedżera właściwości do okna Solution Explorer, kliknij prawym przyciskiem myszy swój projekt, Właściwości, strona Ogólne. Zmień ustawienie "Zestaw narzędzi platformy" z wersji v100 na wersję v110. Użyjesz teraz katalogów zawierających VS2012 zamiast VS2010 Express.

Należy pamiętać, że zmiany w arkuszu właściwości projektu Microsoft.Cpp.Win32.User wpłyną na projekty wszystkie, należy je zresetować.

+0

Hans, myślę, że nieco zawyżasz wszystko. i linki po prostu dobrze. Wszystko, co zmieniłem w tym arkuszu właściwości, to dodać 2 katalogi, które muszę znaleźć globalnie. Ponieważ nie znalazłem nagłówka MFC, wydawało mi się to przydatnym miejscem do umieszczenia go, si powinno to być globalnie dostępne. – Kylotan

+0

Mogę potwierdzić, że wyjęcie dodatkowych katalogów z zawartością - to wszystko, co kiedykolwiek zmieniłem, nawiasem mówiąc - nie rozwiązuje problemu. – Kylotan

+0

... ani nie zastępuje mojego pliku wersją. Jest to świeża instalacja VS2012 (tj. Zainstalowana 2 dni temu), ale wcześniej miałem Visual C++ 2010 Express, z którego prawdopodobnie zaimportowano niektóre ustawienia. – Kylotan

1

Najpierw upewnij się, że MFC jest włączony właściwości projektu> Konfiguracja Właściwości> Ogólne

wykorzystanie MFC należy ustawić statyczny lub dynamiczny biblioteki.

po drugie, aby zapewnić, że cl.exe wykorzystuje wszystkie include katalogi, które określają, trzeba iść do projektu właściwości> C/C++> ogólne i zmiana tłumić startowy banner do braku/nologo-

to da ci pełne polecenie cl dla każdego pliku źródłowego, pokazując dokładnie, co visual studio próbuje zrobić z kodem i opcjami konfiguracyjnymi, które mu dajesz.

np.cl /c /ZI /nologo- /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"StdAfx.h" /Fp"Debug\test.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /showIncludes /analyze- /errorReport:prompt stdafx.cpp

Jeśli używasz dodatkowych folderów uwzględniania, w wierszu poleceń powinieneś zobaczyć wiele dodatkowych przełączników -I.

Powiązane problemy