2010-09-24 18 views
14

Byłem w tej sytuacji kilka razy, gdy studio graficzne nie honoruje Dodatkowe uwzględnianie katalogów, jeśli chodzi o lib i header source files. Na przykład właśnie pobrałem kod źródłowy MyGUI i upewniłem się, że katalogi z zawartością są poprawne. Nawet umieściłem je na absolutnych ścieżkach, Visual Studio wciąż narzekało, że nie może znaleźć konkretnych plików nagłówkowych.Visual Studio nie honoruje katalogów z zawartością

Czy ktoś przeżyć to samo z projektów, a jeśli tak, to czy istnieje rozwiązanie tego problemu? Blockquote

EDIT: My apologies for not being able to explain fully. I know that the library and source files have different include directories. The project that I received had correct directory paths for the Additional Include Directories and Additional Library Directories but Visual Studio still failed to recognize them properly. I can right click and open the header file within Visual Studio but when compiling it still complains it cannot find the required header files. I regularly make projects relying on a framework I myself programmed, so I am quite familiar with how to set up dependencies. This is however the second time this seems to be happening. I don't recall which 3rd party project I was trying to compile last time, but Visual Studio simply refused to believe that the Additional Include Directories paths is where it should look for the header files. I am not sure how to give the complete details of this particular library (MyGUI) but I can point you to the website where you can download it to try and see if it is able to find the header files that are included in the project (if it doesn't compile, that is fine, and it is probably because of additional dependencies, but it should at least be able to find files in the common folder, especially when I put absolute paths in Additional Include Directories)

+2

Nigdy (od wersji 6) nie można prawidłowo skonfigurować programu Visual Studio do akceptowania plików nagłówkowych i/lub bibliotek. Opublikuj strukturę katalogów swojej biblioteki i sposób, w jaki konfigurujesz swój projekt w Visual Studio. –

Odpowiedz

3

Znalazłem (natknąłem się) na rozwiązanie (myślę). Ma to coś wspólnego z limitem znaków nałożonym przez system operacyjny. Chociaż limit powinien wynosić 260, dla mnie mieści się on poniżej 150, see this discussion and links to it. Pobrałem i rozpakowałem plik do C:\Users\MyUserName\My Documents\Downloads\Downloads From Chrome\MyGui3.0... [i tak dalej]. Dowiedziałem się już dawno temu, żeby nie próbować kompilować projektów na tak długich ścieżkach, ale tym razem całkowicie poślizgnęło się to myślom, bo VS wcale nie ostrzegł mnie i wskazał w złym kierunku. W każdym razie, usunięcie i wklejenie projektu do D:\ rozwiązało problem. Nie zamierzam jednak zaznaczać odpowiedzi, dopóki ktoś tego nie potwierdzi.

+0

Czy ktoś wie, czy VS nakłada ograniczenie długości tych ścieżek, aby zapewnić, że podczas wywoływania 'cl.exe', wiersz polecenia nie jest zbyt długi? –

2

można opracować na to? Jeśli dobrze pamiętam, istnieją co najmniej dwa miejsca w Visual Studio, gdzie można skonfigurować w ten sposób:

  1. Per-instalacji: Tools/Options/Projects and Solutions/VC++ Directories)
  2. Per-projektu: Project/Properties/Configuration Properties/"C/C++"/General/Additional Include Directories

Jeśli dodajesz w tym katalogi na projekt (nr 1), które myślę, że jesteś, a następnie próbuje dołączyć z innego projektu, to oczywiście nie działa. Spróbuj dodać je na poziomie instalacji i sprawdź, czy działa.

Może to brzmieć głupio/uproszczająco, ale upewnij się, że ścieżka jest właściwa (tj. Wklej kopię do paska ścieżki Eksploratora i sprawdź, czy pliki nagłówkowe znajdują się w tym folderze).

+0

Właściwie odradzam dodawanie bibliotek losowych do całego środowiska. Czystszym rozwiązaniem jest dodanie potrzebnych katalogów do obu projektów - tak naprawdę nie chcesz, aby każda biblioteka znajdowała się w twoim środowisku. –

+0

To naprawdę zależy od wielu czynników. Jeśli mówisz o dodawaniu Qt - wtedy globalnie byłoby rozsądnie, ponieważ są szanse, że używasz tego w wielu projektach na tym samym komputerze. – Lee

+0

Zobacz Edycja w moim oryginalnym pytaniu w celu uzyskania wyjaśnień. – Samaursa

0

Jeśli przez pliki lib rozumie się pliki biblioteki (.lib), lokalizacja katalogu nie jest określona przez C/C++/General/Additional Include Directories, lecz przez Linker/General/Additional Library Directories.

To logiczne, jeśli o tym pomyślisz. Opcje C/C++ to wszystkie opcje kompilacji, ustawienia związane ze skompilowaniem plików .cpp i .h. Opcje Linkera to wszystkie opcje łączenia, ustawienia związane z łączeniem plików .obj i .lib.

+0

Przepraszam, że nie jestem w stanie wyjaśnić w pełni. Wiem, że biblioteki i pliki źródłowe mają różne katalogi. Projekt, który otrzymałem, zawierał poprawne ścieżki do katalogów dodatkowych i katalogów dodatkowych, ale program Visual Studio nadal ich nie rozpoznał. Mogę kliknąć prawym przyciskiem myszy i otworzyć plik nagłówkowy w Visual Studio, ale gdy kompilacja nadal narzeka, nie może znaleźć wymaganych plików nagłówkowych. – Samaursa

+0

Widziałem to już wcześniej - kliknięcie prawym przyciskiem myszy w programie Visual Studio otwiera inny element niż ten, który jest używany w kompilacji. Zwykle dzieje się, gdy kompilacja się nie powiedzie. Po udanej kompilacji zazwyczaj tak się nie dzieje. Szukałbym takich samych plików włączeń w ścieżkach dołączania, nawet tych, które nie dają ci problemu (może to być dołączenie elementu włączającego). Spróbuj także umieścić pełną ścieżkę w instrukcji #include i sprawdź, czy to ci trochę więcej. –

22

To zdarzyło mi się raz. Okazało się, że kompozycje Debug vs Release są niespójne. Kiedy zmodyfikowałem jedną kompilację, kompilowano drugą kompilację. Ustaw obie kompilacje za pomocą tych samych folderów włączania i sprawdź, czy działa. Powodzenia.

+4

Zdarzyło mi się również z platformą Win32/x64! –

+0

Naprawdę ten błąd zależy od ustawienia obu platform Win32/x64, takich jak Francesco Dondi, a nie wersji Debug vs Release - przetestowanych w Visual Studio 2015 – 123iamking

0

Miałem takie same objawy w moim projekcie C++. Nawigacja z nagłówka do nagłówka poszła dobrze, ale po przełączeniu się do pliku źródłowego nagłówka (powiedzmy foo.cpp), nawigacja do #include <bar.cpp> w tym pliku źródłowym nie powiodła się. Mam następujący błąd:

File 'bar.cpp' not found in the current source file's directory or in build system paths.

Po badań zauważyłem, że ścieżka build systemu podano w błąd, gdzie nie rozszerzony o ścieżkach zawierających projektu.Innymi słowy: IntelliSense nie wiedział, że plik źródłowy (foo.cpp) był częścią projektu i dlatego nie używał ścieżek dołączania projektu do wyszukiwania #include <bar.cpp>.

Naprawiono dla mnie plik intelliSense.cpp (nazwa pliku nie ma znaczenia), który jest częścią projektu, ale został wykluczony z kompilacji. Ten plik zawiera dodatek do każdego pliku źródłowego. ex:

#include <foo.cpp> 
#include <bar.cpp> 
... 

ten sposób IntelliSense wie, że te pliki źródłowe są częścią projektu, a zatem wykorzystać ścieżki obejmują projektu rozwiązać #includes w tych plikach źródłowych.

+0

Powinieneś zawierać pliki nagłówkowe, a nie pliki kodu ... – cybermonkey

0

Miałem również ten problem. Tak jak sam powiedział - ta wartość ciągu zawierającego ścieżkę do twoich frameworków szkieletu musi być taka sama dla konfiguracji Debug and Release. Najlepszym sposobem jest wybranie opcji "Konfiguracja: wszystkie konfiguracje" i "Platforma: wszystkie platformy" z dwóch kontekstowych list kontrolnych znajdujących się w górnej części okna właściwości projektu przed jego wpisaniem lub skopiowanie z paska adresu eksploratora Windows.

Powiązane problemy