Autor Wątek: Ogre3D - problemy przy kompilacji  (Przeczytany 5350 razy)

Offline An0nym8us

  • Użytkownik

# Lipiec 05, 2014, 23:06:22
Witam,

Jako że postanowiłem przerzucić się z C# na C++ z kilku powodów, m. in. wieloplatformowości i większej "swobody" i jako że w C# coś kombinowałem z XNA (niestety zarzucili dalsze wsparcie), postanowiłem przerzucić swój pomysł na kod i napisać grę 3D multiplayer. Wybrałem silnik Ogre3D - sam nie wiem dlaczego, po prostu rzucił mi się w oczy :).

Co pierwsze każdy musiał zrobić, ściągnąłem zbuildowane SDK i wszystko zlinkowałem i skonfigurowałem w C::B jak na stronie Ogre3D pisało - oczywiście błędy wywalało, a to dlatego że używałem wersji dla VC (1.9) a nie ma tejże wersji zbuildowanej dla MinGW.

Postanowiłem takową sam zbuildować - posługiwałem się tym:
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Building+Ogre+with+boost+1.50+upwards+and+MinGW

tutorialem. Wszystko pięknie, pomijając multum ostrzeżeń podczas buildowania i boosta (przy czym tutaj builder załapał crasha, ale wszystkie pliki zostały zbuildowane, więc jest git), i dependences i SDK. W każdym bądź - kompilacja SDK kończy się dwoma błędami:



I przy buildowaniu Debug i Release - widać że błędy z DirectX, ale jak to naprawić? Pozdrawiam.


EDIT: Dodam, że idąc (mniej więcej) śladami podanej ścieżki (chyba) nieznalezionego pliku dotarłem do OgreD3D11DepthBuffer.cpp, a nie do OgreD3D11DepthBuffer.cpp.obj :/.
« Ostatnia zmiana: Lipiec 05, 2014, 23:15:50 wysłana przez An0nym8us »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline aphity

  • Użytkownik

# Lipiec 06, 2014, 01:22:22
Nie widać że błędy z DirectX... w ogóle nie widać jakie są błędy, bo na ekranie masz tylko warningi. Musisz pokazać więcej loga, najlepiej przewiń okno w górę i poszukaj czegoś ze słowem "error".

Cytuj
EDIT: Dodam, że idąc (mniej więcej) śladami podanej ścieżki (chyba) nieznalezionego pliku dotarłem do OgreD3D11DepthBuffer.cpp, a nie do OgreD3D11DepthBuffer.cpp.obj :/.
Nic dziwnego, bo miał on powstać w wyniku kompilacji która się nie powiodła.

Offline An0nym8us

  • Użytkownik

# Lipiec 06, 2014, 01:40:05
Poczynając od "RenderSystems" zaczynają się te owe dwa błędy - wnioskuję to po "Error 1" i "Error 2" :).

Edit: Całego loga wkleję w sumie za kilka godzin, późna godzina jest a trochę zmęczony jestem ,a wszedłem sprawdzić czy ktoś odpisał tylko :).
« Ostatnia zmiana: Lipiec 06, 2014, 01:42:14 wysłana przez An0nym8us »

Offline aphity

  • Użytkownik

# Lipiec 06, 2014, 01:43:23
No właśnie nie, to tylko informacja o niepowodzeniu całości operacji. Musisz pokazać wcześniejszą część loga.

Offline An0nym8us

  • Użytkownik

# Lipiec 06, 2014, 17:47:57
Powiem tak: wczoraj przeinstalowałem DirectX SDK, gdzieś wyczytałem że to może być wina spacji w ścieżce dostępu, w każdym bądź razie: włączyłem dzisiaj znów kompilowanie w celu zgrania całego loga, ale żadnego błędu nie otrzymałem o.O - skompilowane SDK o pojemności 1,7GB znajdowało się tam, gdzie powinno. Zostało skompilowanie wersji Debug :).

P.S.: Takie pytanie: przy buildowaniu SDK w CMake wywala mi błąd o braku skompilowanej biblioteki OIS.dll Release - jednak konfiguracja przebiega pomyślnie (jednakże oznaczone jest to jako błąd) - przejmować się tym? W podanym przeze mnie tutorialu piszą aby skopiować cg.dll z Release'a do Debuga ale to dla Dependencies :/. Dodam, że zawsze przy skasowanie Cache'u w CMake pierwsza próba zbuildowania OgreSDK się nie powiada, działa dopiero po drugiej próbie konfiguracji (bez kasowania Cache'u) - coś nie tak czy to normalne?
« Ostatnia zmiana: Lipiec 06, 2014, 20:44:14 wysłana przez An0nym8us »

Offline Xirdus

  • Redaktor

# Lipiec 06, 2014, 20:41:59
CMake ma za zadanie m.in. wyłapać jakie programy i biblioteki są dostępne dla kompilacji - często jest tak, że projekt ma jakieś opcjonalne części które potrzebują dodatkowych zależności i jak ich nie znajdzie to tej części nie kompiluje - error leci, ale reszta działa i jest to jak najbardziej OK.

Offline An0nym8us

  • Użytkownik

# Lipiec 06, 2014, 20:45:26
Wszystko - o dziwo - skompilowało się poprawnie o.O. Mam teraz problem z TutorialFramework - wywala NoSuchFile - tak jakby w include/OGRE nie miało być żadnych podfolderów tylko wszystkie pliki w jednym (NoSuchFile dla headerów, które znajdują się w podfolderach niedodanych do linkera)

Myślę, że wystarczy po prostu dodać do linkera wszystkie podfoldery, ale czy tak powinienem zrobić czy to u mnie jakiś problem jest? Korzystam z C::B, przygotowywałem projekt wg tego tutoriala: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Setting+Up+An+Application+-+CodeBlocks
« Ostatnia zmiana: Lipiec 06, 2014, 22:35:47 wysłana przez An0nym8us »

Offline aphity

  • Użytkownik

# Lipiec 07, 2014, 00:49:41
Jakich konkretnie headerów nie widzi?

edit: poza tym, headery ustawia się w opcjach kompilatora, nie linkera

Offline An0nym8us

  • Użytkownik

# Lipiec 07, 2014, 02:01:35
OgreOverlay.h

Po dodaniu go w opcjach kompilatora (jego folderu - $(OGRE_HOME)\include\OGRE\Overlay) nie może znaleźć OgreCgPlugin.h, po powtórzeniu dodania folderu, kolejno:

OgreParticleFXPlugin.h
OgreBspSceneManagerPlugin.h
OgreGLPlugin.h

Dalej nie sprawdzałem bo po prostu jak widać wywala komunikat o braku headera akurat tego, który znajduje się w podfolderze folderu podanego w opcjach kompilatora. Co do tego "dalej nie sprawdzałem" to headery lecą jak leci z tego headera: http://pastebin.com/RGgNAAmY (mam na myśli wszystkie z dyrektyw include) ;-;.

Rzeczywiście, moja pomyłka - headery dodawałem zresztą w Search Directories->Compiler w zakładce projektu (nie Debug czy Release).
« Ostatnia zmiana: Lipiec 08, 2014, 02:00:44 wysłana przez An0nym8us »

Offline An0nym8us

  • Użytkownik

# Lipiec 08, 2014, 02:03:53
Poszperałem trochę na ten temat i gdzieniegdzie jest napisane, że ten kod na którym bazuję (a jest to TutorialFramework pod wersję 1.9) wymaga aktualizacji, ale błąd występuje także w headerze Ogre'a ;-;.

Co do TutorialFrameworka - OK, poprawiłem w kodzie dyrektywy include, ale dziwne wydaje mi się to, że w SDK Ogre'a znajduje się header z błędnymi include'ami - OgreStaticPluginManager zawiera dyrektywy bezpośrednio do headerów pluginów, bez poprzedzenia ich "plugins\" (a powinien, przynajmniej z perspektywy początkującego - czyli mnie).

Jeśli mógłby mnie ktoś oświecić - prosiłbym. Dla mnie nie ma to na teraz najmniejszego sensu (a powinno mieć, skoro skompilowało się bez problemu).

Offline Xirdus

  • Redaktor

# Lipiec 08, 2014, 02:13:53
Po prostu niektóre kompilatory z niektórymi ustawieniami pozwalają na takie coś, a zgodnie z duchem open source, nikt nigdy nie sprawdził w innej konfiguracji ;)

Offline An0nym8us

  • Użytkownik

# Lipiec 08, 2014, 02:45:41
Czyli spokojnie mogę zmodyfikować OgreStaticPluginManager.h?

Offline Xirdus

  • Redaktor

# Lipiec 08, 2014, 08:24:31
Jak ci zadziała to tak. Tylko pamiętaj o licencji.

Offline An0nym8us

  • Użytkownik

# Lipiec 10, 2014, 16:42:53
Po kilku dniach przerwy ( szczerze mówiąc miałem dość udręki z Ogre3D) zmieniłem ścieżki dostępu w OgreStaticPluginLoader.h i teraz wywala inny błąd, ale myślę że to wina mojej wcześniejszej działalności na owym headerze - rebuilduję teraz SDK.

Dodałem wszystkie foldery z include'a tam gdzie być powinny (już po ponownej kompilacji OgreSDK) i wywala brak OgreD3D9Plugin.h. Sprawdzałem, nie ma takiego headera u mnie w SDK Ogre'a, a jest w API, więc co może być nie tak?

Dodam, że po zbuildowaniu w bin/Debug znajduje się tylko cg.dll OIS_d.dll (nie ma OgreMain_d.dll), a w bin/Release samo cg.dll - to dobrze czy źle ;-;?


Myślę spróbować zbuildować lub nawet pobrać gotowego do buildu Ogre3D ale 1.8 - co o tym myślicie? Czy jeśli Ogre 1.8 pójdzie zostać na nim (chodzi mi o to że 1.9 jest nowsze i ma raczej nowszy i lepszy kod)?

W Ogre3D 1.8 nie mam znowuż OverlaySystem.h (ani OgreOverlaySystem.h) ;_; - pobrałem już gotowca dla Mingw32 ;_;. Może mi ktoś wyjaśnić dlaczego w każdej wersji jaką pobieram czegoś zawsze brakuje? ;_;




Jeśli ktoś ma możliwość, to prosiłbym o szczegółowe wyjaśnienie krok po kroku w jaki sposób zbuildować i skompilować Ogre SDK 1.9 ;_;? Pewnie robię coś źle, a sam nie wiem co :/.
« Ostatnia zmiana: Lipiec 10, 2014, 17:37:33 wysłana przez An0nym8us »

Offline An0nym8us

  • Użytkownik

# Lipiec 16, 2014, 01:40:08
Dobra, niby problem rozwiązany :).

Ale sam nie wiem jak. Przeinstalowałem DirectX SDK, skasowałem skompilowane SDK i Dependencies Ogre'a, skompilowałem je ponownie, i działają o.O. Znaczy się, nie ma tych błędów które wcześniej miałem, co do niekompatybilności TutorialFrameworka to wystarczyło dopisać parę dyrektyw #include. Teraz rekompiluję boosta, bo teraz tylko z nim wywala mi jeden błąd (NoSuch, czyli pewnie wina zwiechy kompilatora).

Niemniej dziękuję za poświęcony mi czas, jeśli będę miał jakieś problemy z boostem, napiszę tutaj :).