Po wielu latach wracam do Visual Studio. Nie kręci mnie budowanie środowiska „from scratch” i spędzania godzin na instalacji i konfiguracji i łączenia narzędzi, które były rozwijane równolegle bez myśli o współpracy ze sobą. Visual Studio od Microsoftu zawsze było budowane w jednym konkretnym celu, więc jest narzędziem dopracowanym i raczej niespodzianek nie należy się spodziewać.
Tak na marginesie. Bardzo wielu producentów narzędzi oferuje wersje darmowe do prywatnego użytku. To jest bardzo dobry kierunek, gdyż pasjonaci mogą uczyć się narzędzi i technik, nie płacąc kroci za oprogramowanie. Jaki z tego ma zysk producent? Prosty. Przyzwyczaja/uzależnia użytkowników od swojego produktu.
Tym razem spróbuję swoich sił w grafice 3D, tak z ciekawości. Na tapetę biorę OpenGL. Konfiguracja jest bardzo prosta, ale warto zapisać procedurę krok-po-kroku, tak dla pamięci.
- Instalujemy Visual Studio 2019 (Community Edition). Procedura trywialna, ale chwile trwa i potrzebne jest sporo miejsca, w zależności od tego jakie opcje wybierzemy. Zakładamy, że wszystko przebiegnie poprawnie…
- Następnie ściągamy bibliotekę GLFW. Wersję 32-bity lub 64-bity, w zależności od upodobania. Ja ściągnąłem obie, ale będę używał 32-bitowej.
- Kolejny krok. Uruchamiamy środowisko i tworzymy pusty projekt C++. Rozwiązanie (solution) zapisujemy w folderze wybranym przez nas.
- W katalogu, gdzie znajduje się rozwiązanie (solution, plik *.sln) powinien znajdować się katalog z nazwą projektu i plikiem *.sln. W tym też katalogu tworzymy katalog o nazwie lib (w zasadzie nazwa może być dowolna). W tym katalogu będziemy przechowywać wszelkie biblioteki, których będziemy używać w naszym rozwiązaniu.
- W środowisku Visual Studio otwieramy nasze rozwiązanie i projekt. Jako, że projekt jest pusty, należy dodać do niego plik źródłowy. Ja nazywam go main.cpp. Na stronie GLFW znajduje się kod źródłowy aplikacji hello world. Wklejamy go i zapisujemy. Kod oczywiście się nie skompiluje, gdyż środowisko nie widzi pliku nagłówkowego oraz bibliotek. Musimy je wskazać.
- Do listy katalogów, gdzie środowisko będzie szukać plików *.h należy dodać katalog z plikiem nagłówkowym biblioteki glfw. W naszym przypadku znajduje się on w
$(SolutionDir)\lib\openGL\glfw-3.3.2.bin.WIN32\include
, gdzie$(SolutionDir)
rozwija się do katalogu, gdzie znajduje się plik *.sln naszego rozwiązania. Dostajemy się tam przez właściwości projektuConfiguration Properties --> VC++ Directories --> Include Directories
. - Jeżeli wszystko jest OK, w tym momencie projekt powinien się kompilować bez błędów (CTLR+F7) – ale jeszcze nie budować.
- Do listy katalogów, gdzie środowisko będzie szukać plików *.lib należy dodać katalog z plikiem glfw3.lib. Znajduje się on w
$(SolutionDir)\lib\openGL\glfw-3.3.2.bin.WIN32\lib-vc2019
. Ten katalog należy dodać do:Configuration Properties --> VC++ Directories --> Library Directories
. - We właściwościach linkera:
Configuration Properties --> Linker --> Input --> Additional Dependencies
usuwamy domyślną zawartość i dodajemy wpis:glfw3.lib;User32.lib;Gdi32.lib;Shell32.lib;opengl32.lib
. Są to biblioteki, których wymaga bibliotek glfw. - Teraz projekt powinien się linkować z jednym ostrzeżeniem:
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
. Projekt już zadziała, ale hmmm… Warto zlikwidować to ostrzeżenie. Na sieci jest wiele rozwiązań, ale nie wszystkie działają. U mnie zadziałało należy do:Configuration Properties --> Linker --> Input --> Ignore Specyfic Default Libraries
dodać:msvcrtd.lib
.
Jeżeli wszystko poszło jak trzeba, to uruchomieniu projektu (Debug) powinniśmy otrzymać czarne okno OpenGL’a zatytułowany „Hello World”.