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?
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
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$_ZN18btAlignedAllocatorI9btHashIntLj16EE10deallocateEPS0_[btAlignedAllocator<btHashInt, 16u>::deallocate(btHashInt*)]+0xd): undefined reference to `btAlignedFreeInternal(void*)'
.objs\main.o:main.cpp:(.text$_ZN18btAlignedAllocatorI14btTriangleInfoLj16EE10deallocateEPS0_[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
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!
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.