Autor Wątek: Instalacja Bulleta  (Przeczytany 2805 razy)

kubabednar

  • Gość
# Czerwiec 01, 2009, 20:18:16
Hej,

na samym początku zaznaczę, że problem, który chcę tutaj omówić(i przy waszej małej pomocy rozwiązać ;)) jest strasznie lamerski. Spytacie dlaczego więc go tutaj umieszczam? Ano dlatego że męczę się z tym silnikiem fizycznym(nie tylko z nim, z paroma innymi również) od 2 miesięcy!!! Przedstawiłem wczoraj swój problem na forum Bulleta, ale chyba ominęli ten wątek(albo był całkowicie niezrozumiały, znając moją biegłość w posługiwaniu się językiem angielskim;)). Koniec lania wody, teraz do rzeczy.

Pobrałem sobie najnowszą wersję Bulleta 2.74, ropakowałem, otworzyłem odpowiednią solucję, skompilowałem ją, nie było z tym żadnych problemów. Następnie spróbowałem użyć go w moim projekcie. Dodałem Additional Include Directories ścieżkę do source'ów Bulleta. Kolejną czynnością jaką wykonałem było dodanie w pliku main.cpp następującej linijki kodu:
#include <btBulletDynamicsCommon.h>Nacisnąłem F7 i o to błędy, które wypluwa kompilator:
Cytuj
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(124) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(124) : error C2227: left of '->getLinearVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(124) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(124) : error C2227: left of '->getAngularVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(124) : error C2228: left of '.cross' must have class/struct/union
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(132) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(132) : error C2227: left of '->getAngularVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(167) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(167) : error C2227: left of '->setLinearVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(167) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(167) : error C2227: left of '->getLinearVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(168) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(168) : error C2227: left of '->setAngularVelocity' must point to class/struct/union/generic type
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(168) : error C2027: use of undefined type 'btRigidBody'
1> c:\users\kuba\desktop\bullet-2.74\src\bulletcollision\broadphasecollision\btdispatcher.h(23) : see declaration of 'btRigidBody'
1>c:\users\kuba\desktop\bullet-2.74\src\bulletdynamics\constraintsolver\btsolverbody.h(168) : error C2227: left of '->getAngularVelocity' must point to class/struct/union/generic type

Znając życie pominąłem jakiś ważny krok, aczkolwiek na stronie Bulleta nie podali zbyt dokładnych instrukcji jak mam go podłączyć. Naprawdę przepraszam za tak lamerskie pytanie, ale naprawdę po 2 miesiącach walki chcę się z tym uporać.

Pozdrawiam serdecznie i proszę o pomoc,
Kuba

Offline Mr. Spam

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

Offline skoti

  • Użytkownik

# Czerwiec 02, 2009, 00:04:05
wygląda na to że nie masz jakiś plików nagłówkowych (kilka powinno być w katalogu include, a reszta w kilku katalogach z podkatalogami).
Pierwszy błąd to znak, że brakuje Ci "BulletDynamics/Dynamics/btRigidBody.h"

kubabednar

  • Gość
# Czerwiec 08, 2009, 21:04:36
Sprawdziłem czy nie ma literówki, zmieniłem nawet nazwę, nic to nie dało. Może jakieś inne pomysły?

kubabednar

  • Gość
# Czerwiec 09, 2009, 17:16:49
Przepraszam za post pod postem, ale chyba daje sobie spokój z Bulletem. Postanowiłem przejść na Newtona :) Czy może zna ktoś linki do tutków na temat jego używania? Szukałem, szukałem, ale nic nie znalazłem...

Offline bananu7

  • Użytkownik
    • komiks RFMN

# Czerwiec 21, 2009, 13:21:11
Sprawdź Include Directories ....

kubabednar

  • Gość
# Czerwiec 21, 2009, 20:42:29
Wiem, zadałem pytanie zanim go ściągnąłem  i dokładnie przejrzałem, ale i tak dzięki ;)

Offline nilphilus

  • Użytkownik
    • wordpress

# Czerwiec 21, 2009, 20:50:16
Ja tam takich problemów nie miałem ;-)

Jeżeli nadal chcesz się bawić z tym to spróbuje pomóc zainstalować (osobiście udało mi się połączyć w końcu OGRE z Bulletem). Wyślij mi na PM nr gg/tlen/jabber. A jak coś się da zrobić to tutaj się wrzuci tylko rozwiązanie dla potomnych :-)

kubabednar

  • Gość
# Czerwiec 22, 2009, 12:53:28
Nie, już naprawdę mi nie potrzeba pomocy. Podłączyłem ładnie Newtona, wszystko śmiga. Polecam, bo z nim nie było absolutnie żadnych problemów, ani w trakcie instalacja, a później podczas używania.

Offline Vx-x.

  • Użytkownik
    • Vx-x. Page

# Czerwiec 22, 2009, 14:53:50
Temat może zakończony, ale muszę się w pełni z tobą zgodzić.
Sam miałem ochotę założyć temat o głupocie twórców silników/bibliotek do samodzielnej kompilacji. Cieszę się że kod jest otwarty, ale ja chce ładnie i szybko dolinkować bibliotekę i jazda. Newton spadł na mnie jak z nieba i pokazał że jak się chce, to się da w folderze umieścić gotowe skompilowane pliki (Newton.h i Newton.lib, wystarczyło przekopiować i zero błędów kompilacji). Jedyne zastrzeżenie do Newtona mam takie,  że tutoriale są  słabo napisane, ale po kilku godzinach kombinowania miałem własną klasę korzystającą z Newtona.
Nie wiem czy to głupota czy lenistwo, że autor tworzy swoje dzieło przez x dni/miesięcy/lat i na koniec nie chce mu się zbudować jednego pliku. Pomijam fakt, że nadal nie wszyscy używają Visuala (np. ja) i nie będą pobierać ok. 100 mb tylko do jednej kompilacji, a nawet gdyby była tylko jedna osoba na całym świecie niekorzystająca z VC ani innych programów do budowy 'bibliotek statycznych', to w interesie twórcy silnika jest to, żeby każdy użytkownik był zadowolony. Koniec narzekania.

Offline skoti

  • Użytkownik

# Czerwiec 22, 2009, 15:18:57
Nie wiem czy to głupota czy lenistwo, że autor tworzy swoje dzieło przez x dni/miesięcy/lat i na koniec nie chce mu się zbudować jednego pliku. Pomijam fakt, że nadal nie wszyscy używają Visuala (np. ja) i nie będą pobierać ok. 100 mb tylko do jednej kompilacji, a nawet gdyby była tylko jedna osoba na całym świecie niekorzystająca z VC ani innych programów do budowy 'bibliotek statycznych', to w interesie twórcy silnika jest to, żeby każdy użytkownik był zadowolony. Koniec narzekania.
Ani głupota, ani lenistwo, ani jeden plik ;p. bullet to zbiór kilku bibliotek, wielu nagłówków i dużo możliwości kompilacji (w jednym projekcie możesz używać zupełnie innej wersji niż w drugim (nie chodzi o numerek, ale o opcje które ustawisz przy kompilacji)). Po co Ci Visual? Przecież bullet używa Cmake i on wygeneruje Ci projekty do wielu ide i kompilatorów (makefile dla mingw32, c::b, eclipse...).
Z bibliotekami statycznymi uważaj bo jak trafisz na licencję np. lgpl i zlinkujesz statycznie będziesz zmuszony udostępnić kod dlatego bezpieczniej dynamiczne dll mieć (no chyba, że będziesz bardzo uważał).

Offline Vx-x.

  • Użytkownik
    • Vx-x. Page

# Czerwiec 22, 2009, 16:02:56
Trochę się rozpisałem i zacząłem się czepiać VC, ale ogółem chodziło mi o to, żeby w paczce z biblioteką znajdowały się gotowe liby i dodatkowo(!!!) możliwość własnej kompilacji. Na początku miałem wątpliwości czy takie coś jest możliwe (czy podczas kompilacji nie zachodzą jakieś 'tajemne' procesy) ale potem zobaczyłem Newtona i zacząłem narzekać.
PS: DLL chyba raczej prawie na pewno musi być, z tego co mi wiadomo (i też jest w paczce, newton.dll  ;) )
Jak dla mnie to całe zamieszanie z linkowaniem jest w ogóle niepotrzebne, ale wiem że nie każdy życzy sobie aby grzebano w jego kodzie (czy do czego to tam służy, osobiście nie znam się na takich rzeczach)
PS2: A co do rodzajów kompilacji, ja tam nigdy nie musiałem grzebać w plikach, bo zwykle coś psułem  :P
« Ostatnia zmiana: Czerwiec 22, 2009, 16:09:46 wysłana przez Vx-x. »

Offline nilphilus

  • Użytkownik
    • wordpress

# Czerwiec 22, 2009, 16:57:39
Wierz mi, z jakiś powodów jest tak, a nie inaczej ;-)
I nie jest to ani głupota ani lenistwo twórców (popatrz co zrobili... trochę śmiesznie brzmi  zarzucanie im takich rzeczy)

Offline skoti

  • Użytkownik

# Czerwiec 22, 2009, 17:02:50
Trochę się rozpisałem i zacząłem się czepiać VC, ale ogółem chodziło mi o to, żeby w paczce z biblioteką znajdowały się gotowe liby i dodatkowo(!!!) możliwość własnej kompilacji. Na początku miałem wątpliwości czy takie coś jest możliwe (czy podczas kompilacji nie zachodzą jakieś 'tajemne' procesy) ale potem zobaczyłem Newtona i zacząłem narzekać.
Zauważ, że porównujesz newtona z bulletem, a bullet możesz mieć na jeden rdzeń, ale też wielordzeniowy (i tu zaczynają się schody, bo bo możesz zbudować z obsługą spu, cuda, posix thread, win32 thread, czy teraz nowością będzie openCL). Więc przygotowanie takich plików dll to przygotowanie ~4 * 6 (ilość platform, chodź ich jest więcej niż 6 to podam tylko tyle) * różne wersje (ich można wiele też budować) (* i w przypadku PC jeszcze z optymalizacjiami sse, sse2, sse3 mmx, 3dnow...) no i wychodzi całkiem pokaźna liczba której się nie opłaca robić jak się używa Cmake i przygotowanie wersji dla siebie wymaga kilku kliknięć - newton musi dawać lib, a bo nie ma otwartych źródeł przez co libki są optymalizowane na stare sprzęty żeby działało wszędzie i nie ma takich możliwości.

PS: DLL chyba raczej prawie na pewno musi być, z tego co mi wiadomo (i też jest w paczce, newton.dll  ;) )
Jak dla mnie to całe zamieszanie z linkowaniem jest w ogóle niepotrzebne, ale wiem że nie każdy życzy sobie aby grzebano w jego kodzie (czy do czego to tam służy, osobiście nie znam się na takich rzeczach)
PS2: A co do rodzajów kompilacji, ja tam nigdy nie musiałem grzebać w plikach, bo zwykle coś psułem  :P
W przypadku bulleta nie musi być - to było takie ostrzeżenie przed innymi bibliotekami, bo zastanowiło mnie stwierdzenie "innych programów do budowy 'bibliotek statycznych'".
Nie każdy sobie życzy dlatego linkuje dynamicznie, bo też nie każdy twórca bibliotek chce, aby jego kod statycznie łączony z zamkniętymi programami.

Offline Vx-x.

  • Użytkownik
    • Vx-x. Page

# Czerwiec 22, 2009, 18:41:39
Czegoś nowego się dowiedziałem.
Cóż, dzięki wam wielkie za informacje, ale człowiek jest istotą z natury leniwą i jeśli jest jakieś proste rozwiązanie, to właśnie za nim idę :)