Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Code::Blocks & irrBullet linkkeriongelma

Resiina [22.07.2012 17:37:46]

#

Yritän kääntää ohjelmaani MinGW:llä.
Kun yritän sisällyttää irrbullet.h koodiini, niin saan seuraavanlaisen virheilmoituksen:

)]+0xd)||undefined reference to `btAlignedFreeInternal(void*)'|
)]+0xd)||undefined reference to `btAlignedFreeInternal(void*)'|
)]+0xd)||undefined reference to `btAlignedFreeInternal(void*)'|
.objs\main.o:main.cpp:(.rdata$_ZTV17btTypedConstraint[vtable for btTypedConstraint]+0x30)||undefined reference to `btTypedConstraint::serialize(void*, btSerializer*) const'|
||=== Build finished: 4 errors, 0 warnings ===|

Olen linkittänyt projektiin tiedostot libIrrlicht.dll.a ja libirrBullet.a. Sama virhe ilmaantuu vaikka jättäisi tuon libirrBullet.a linkittämättä. Missä voisi olla vika?

vuokkosetae [22.07.2012 23:31:19]

#

Linkkerin virheeltä vaikuttavat. Koska kyse on minGW:stä niin taikasanat ovat kääntäjän -L ja -l vivut

Onhan irrlightin kirjastot jossain -Lpolku/kirjastoon osastossa?
Ja onhan se -lirrBullet käännösrivin lopussa.

Eli se voisi näyttää jotain tällaista.
g++ -o mun_ohjelma -I/polku/irrlightin/headereihin -L/polku/irrlightin/libbeihin munohjelma.cc -lirrBullet

Resiina [23.07.2012 02:40:37]

#

Ei auta vaikka laitan tuonne -lirrBullet. Onko se edes varmasti oikea parametri?
Tässä vielä koko Build log:

-------------- Clean: default in pallopeli ---------------

Cleaned "pallopeli - default"

-------------- Build: default in pallopeli ---------------

mingw32-g++.exe -Wall -IC:\Users\Resiina\Desktop\irrlicht-1.7.3\include -IC:\Users\Resiina\Desktop\irrlicht-1.7.3\include -IC:\Users\Resiina\Desktop\irrBullet-0.1.8\source -IC:\Users\Resiina\Desktop\irrBullet-0.1.8\source\bheaders -IC:\Users\Resiina\Desktop\irrBullet-0.1.8\source\bheaders\Bullet -c C:\cpp-projektit\PALLOPELI\main.cpp -o .objs\main.o
C:\cpp-projektit\PALLOPELI\main.cpp: In function 'int main(int, char**)':
C:\cpp-projektit\PALLOPELI\main.cpp:122: warning: unused variable 'skydome'
C:\cpp-projektit\PALLOPELI\main.cpp:131: warning: unused variable 'light'
C:\cpp-projektit\PALLOPELI\main.cpp:173: warning: unused variable 'A'
mingw32-g++.exe -LC:\Users\Resiina\Desktop\irrlicht-1.7.3\lib\Win32-gcc -LC:\Users\Resiina\Desktop\irrlicht-1.7.3\lib\Win32-gcc -LC:\Users\Resiina\Desktop\irrlicht-1.7.3\lib -LC:\Users\Resiina\Desktop\irrBullet-0.1.8\lib\win32_gcc\Release -LC:\Users\Resiina\Desktop\irrBullet-0.1.8\lib\win32_gcc -o pallopeli.exe .objs\main.o -lirrBullet -lIrrlicht -lopengl32 -lglu32 -lgdi32 C:\Users\Resiina\Desktop\irrlicht-1.7.3\lib\Win32-gcc\libIrrlicht.dll.a C:\Users\Resiina\Desktop\irrBullet-0.1.8\lib\win32_gcc\Release\libirrBullet.a -mwindows
.objs\main.o:main.cpp:(.text­$_ZN18btAlignedAllocatorIiLj16EE10deallocateEPi­[btAlignedAllocator<int, 16u>::deallocate(int*)]+0xd): undefined reference to `btAlignedFreeInternal(void*)'
.objs\main.o:main.cpp:(.text$_ZN18bt­Alig­ned­Allo­ca­tor­I9bt­Hash­Int­Lj16EE10­de­al­lo­ca­teEPS0_[btAlignedAllocator<btHashInt, 16u>::deallocate(btHashInt*)]+0xd): undefined reference to `btAlignedFreeInternal(void*)'
.objs\main.o:main.cpp:(.text$_ZN18bt­Alig­ned­Allo­ca­tor­I14bt­Triang­le­Info­Lj16EE10­de­al­lo­ca­teEPS0_[btAlignedAllocator<btTriangleInfo, 16u>::deallocate(btTriangleInfo*)]+0xd): undefined reference to `btAlignedFreeInternal(void*)'
.objs\main.o:main.cpp:(.rdata­$_ZTV17btTypedConstraint[vtable for btTypedConstraint]+0x30): undefined reference to `btTypedConstraint::serialize(void*, btSerializer*) const'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
4 errors, 3 warnings

jalski [23.07.2012 09:38:44]

#

Linkitätkö kaikki oikeassa järjestyksessä?

suoraan ohjeista:

Using irrBullet with Irrlicht is very straight-forward and simple.

    Before you can begin integrating irrBullet in your application, there are a few things
    to add to your project first.

    Link against these static libraries (included in (<irrBulletDir> / lib), pre-compiled):

        libirrBullet.a/.lib
        libbulletdynamics.a/.lib
        libbulletsoftbody.a/.lib
        libGIMPACTUtils.a/.lib
        liblinearmath.a/.lib
        libbulletcollision.a/.lib

    This is for most features and with GImpact included. Other libs must be linked against for some features,
    such as libconvexdecomposition.a for decomposing objects.

    It is important that they are linked against in this order to avoid linker errors.


    Next, add these directories to your Search Directories list:

        <irrBulletDirectory> / source
        <irrBulletDirectory> / source / bheaders
        <irrBulletDirectory> / source / bheaders / bullet

    Then just include irrBullet.h into the top of your files using irrBullet.

    You are now ready to begin the integration process!

Resiina [23.07.2012 11:59:14]

#

En tiennytkään, että tuolla järjestykselläkin on noin suuri merkitys. Olin jo aiemmin kokeillut linkata nuota muitakin .a-tiedostoja, mutta väärässä järjestyksessä. Nyt toimii ohjelma, kiitokset avusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta