Hei! Päätin kokeilla Box2D-fysiikkamoottoria C++:lla käyttäen Dev-Cpp-kehitysympäristöä (v.4.9.9.2). En kuitenkaan onnistu suorittamaan ensimmäistäkään ohjelmaa, en edes mukana tulevaa HelloWorld-esimerkkiä. Mitä tahansa kokeilenkin, kääntäjä sanoo esim:
[Linker error] undefined reference to `b2World::b2World(b2Vec2 const&)' [Linker error] undefined reference to `b2World::CreateBody(b2BodyDef const*)' [sama jatkuu ties kuinka monta riviä...]
Ja kerronpa vielä mitä olen tehnyt:
Ensin latasin paketinhallinnan kautta Box2D-kirjaston. Sitten loin uuden projektin ja valitsin projektin tyypiksi "Box2D Project", jolloin linkkerin parametrilistassa näkyi seuraavanlainen rivi: -lBox2D.
Sitten suoritin ohjelman.
Tässä vielä kyseisen ohjelman lähdekoodi Google codessa
Niin ja olen kyllä Googlettanut kuumeisesti löytämättä apua joten olisin tosi iloinen jos kertoisitte mitä tein väärin, mitä jätin tekemättä tai mitä voisin tehdä :)
-lBox2D on jo hyvä alku. Kuitenkin nyt pitää tietää missä tuo kirjasto on ja antaaa -Lpolku/oikeaan/paikkaan optio, jotta kääntäjä löytää sen.
Eikös se kirjasto ole "lib/libBox2D.a", joka on siis IDE:n kotikansiossa? Käsittääkseni. Ja Box2D-projektini on myös IDE:n kotikansiossa olevassa kansiossa, joten miten linkitys onnistuu? Enkä totta puhuen täysin ymmärtänyt mitä tarkoitit -Lpolku-jutulla :/
-l valitsin ottaa vastaa -lkirjasto ja linkkaa tiedoston libkirjasto.nytenmuista
Noita kirjastoja etsitään sitten eri paikoista ja -Lpolku lisää niitä hakupaikkaan. Yleensä lähinnä vain kääntäjän omasta puusta. Siis sieltä mistä esimerkiksi -lm tulee näppärästi mukaan. Jos näet miten se kääntäjä kääntää sen ohjelman voit yrittää niin voit arvata oikein. Ja jos on vaikka jos tuo lib hakemisto on suhteessa helloworldiin ../lib/ hakemistossa, pitää tuo tosiaankin saada sille kääntäjälle.
Tämäkin vastaus täysin kristallipallostani revittynä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.