Название: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 13:46 Привет!
Использую: Qt 5.2.1 for Windows 32-bit (MinGW 4.8, OpenGL, 634 MB) У меня не получается откомпилировать это приложение: http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World (http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World) Компилятор ругается: (http://i6.pixs.ru/storage/7/8/4/172png_4369445_11658784.png) Вот что я сделал: - через cygwin64 установил cmake - установил bullet по инструкции: http://bulletphysics.org/mediawiki-1.5.8/index.php/Installation (http://bulletphysics.org/mediawiki-1.5.8/index.php/Installation) Получил папку include и lib: (http://i.pixs.ru/storage/8/5/4/173png_1684107_11658854.png) (http://i7.pixs.ru/storage/8/9/1/174png_9891140_11658891.png) Подсоединил include и lib так: Код
Заранее спасибо за ответ! Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: kibsoft от Апрель 12, 2014, 15:35 Код: LIBS = -L$${BULLET_LOCATION}/lib Код: LIBS += -L$$(FFMPEG_LIBRARY_PATH) -lavformat Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:14 Спасибо большое! Теперь я представляю, что надо искать. Но как узнать название библиотеки? Пытаюсь искать - результата нет.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:21 Попытался вот так, но по-прежнему те же ошибки:
Цитировать LIBS += -L$${BULLET_LOCATION}/lib LIBS += -L$${BULLET_LOCATION}/lib -lBulletDynamics -lBulletCollision -lLinearMath Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 16:32 Попытался вот так, но по-прежнему те же ошибки: Скажите, вы после изменения pro файла qmake не забываете запускать?Цитировать LIBS += -L$${BULLET_LOCATION}/lib LIBS += -L$${BULLET_LOCATION}/lib -lBulletDynamics -lBulletCollision -lLinearMath Первая строка лишняя. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:36 Пробовал:
- Run qmake - Clean - Rebuild - даже папку Build удалял Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 16:37 Покажите ошибки с самого начала.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:41 Я думаю, что надо отладочные библиотеки подключать, как в Qwt я делал для debug:
Цитировать LIBS += -L$${QWT_LOCATION}/lib \ -lqwtd Но в Bullet нет библиотек с буквой 'd'. Может надо было при перед сборкой Bullet настроить. Покажите ошибки с самого начала. (http://i6.pixs.ru/storage/1/0/4/175png_5864632_11661104.png) main.cpp Код
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 16:45 Покажите консоль сборки креатора, там где он команды и ошибки печатает.
И лучше просто в виде текста. :) Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:50 Я понял, о чём Вы. Просто у меня всегда окно "Compile Output" было скрыто. Я им не пользовался. Нашёл его в меню "Window" -> "Output Panels" -> "Compile Output"
Цитировать 17:46:53: Running steps for project HelloBullet... 17:46:53: Configuration unchanged, skipping qmake step. 17:46:53: Starting: "C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe" C:/Qt/Qt5.2.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'D:/Documents/Qt/QtBullet/build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug' g++ -Wl,-subsystem,console -mthreads -o debug/HelloBullet.exe debug/main.o -LC:/cygwin64/usr/local/lib -lBulletDynamics -lBulletCollision -lLinearMath -lBulletSoftBody -LC:\Qt\Qt5.2.1\5.2.1\mingw48_32\lib -lQt5Cored debug/main.o: In function `main': D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:9: undefined reference to `btDbvtBroadphase::btDbvtBroadphase(btOverlappingPairCache*)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:11: undefined reference to `btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(btDefaultCollisionConstructionInfo const&)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:12: undefined reference to `btCollisionDispatcher::btCollisionDispatcher(btCollisionConfiguration*)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:14: undefined reference to `btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver()' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:16: undefined reference to `btDiscreteDynamicsWorld::btDiscreteDynamicsWorld(btDispatcher*, btBroadphaseInterface*, btConstraintSolver*, btCollisionConfiguration*)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:21: undefined reference to `btStaticPlaneShape::btStaticPlaneShape(btVector3 const&, float)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:29: undefined reference to `btRigidBody::btRigidBody(btRigidBody::btRigidBodyConstructionInfo const&)' D:\Documents\Qt\QtBullet\build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../HelloBullet/main.cpp:39: undefined reference to `btRigidBody::btRigidBody(btRigidBody::btRigidBodyConstructionInfo const&)' debug/main.o: In function `ZN17btCollisionObjectnwEj': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h:123: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN17btCollisionObjectdlEPv': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h:123: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN13btSphereShapenwEj': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h:27: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN13btSphereShapedlEPv': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h:27: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN13btSphereShapeC1Ef': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h:29: undefined reference to `btConvexInternalShape::btConvexInternalShape()' C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h:29: undefined reference to `vtable for btSphereShape' debug/main.o: In function `ZN18btStaticPlaneShapenwEj': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h:34: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN18btStaticPlaneShapedlEPv': C:/cygwin64/usr/local/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h:34: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN20btDefaultMotionStatenwEj': C:/cygwin64/usr/local/include/bullet/LinearMath/btDefaultMotionState.h:14: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN20btDefaultMotionStatedlEPv': C:/cygwin64/usr/local/include/bullet/LinearMath/btDefaultMotionState.h:14: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN23btDiscreteDynamicsWorldnwEj': C:/cygwin64/usr/local/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h:99: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN23btDiscreteDynamicsWorlddlEPv': C:/cygwin64/usr/local/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h:99: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN17btTypedConstraintdlEPv': C:/cygwin64/usr/local/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h:112: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN35btSequentialImpulseConstraintSolvernwEj': C:/cygwin64/usr/local/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h:112: undefined reference to `btAlignedAllocInternal(unsigned int, int)' debug/main.o: In function `ZN35btSequentialImpulseConstraintSolverdlEPv': C:/cygwin64/usr/local/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h:112: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN18btAlignedAllocatorIiLj16EE10deallocateEPi': Makefile.Debug:77: recipe for target 'debug/HelloBullet.exe' failed mingw32-make[1]: Leaving directory 'D:/Documents/Qt/QtBullet/build-HelloBullet-Desktop_Qt_5_2_1_MinGW_32bit-Debug' makefile:34: recipe for target 'debug' failed C:/cygwin64/usr/local/include/bullet/LinearMath/btAlignedAllocator.h:90: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN18btAlignedAllocatorI9btHashIntLj16EE10deallocateEPS0_': C:/cygwin64/usr/local/include/bullet/LinearMath/btAlignedAllocator.h:90: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o: In function `ZN18btAlignedAllocatorI14btTriangleInfoLj16EE10deallocateEPS0_': C:/cygwin64/usr/local/include/bullet/LinearMath/btAlignedAllocator.h:90: undefined reference to `btAlignedFreeInternal(void*)' debug/main.o:main.cpp:(.rdata$_ZTV17btTypedConstraint[__ZTV17btTypedConstraint]+0x30): undefined reference to `btTypedConstraint::serialize(void*, btSerializer*) const' collect2.exe: error: ld returned 1 exit status mingw32-make[1]: *** [debug/HelloBullet.exe] Error 1 mingw32-make: *** [debug] Error 2 17:46:54: The process "C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe" exited with code 2. Error while building/deploying project HelloBullet (kit: Desktop Qt 5.2.1 MinGW 32bit) When executing step 'Make' 17:46:54: Elapsed time: 00:01. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 16:59 Получается, что там тоже самое, что и на картинке.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 17:02 Получается, что там тоже самое, что и на картинке. Я на пути и на названия библиотек хотел посмотреть.Странно как-то, или вы не все библиотеки подключили, или одно из двух. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:07 Подключил все, которые есть:
(http://i6.pixs.ru/storage/4/9/2/176png_6115410_11661492.png) Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:11 Что интересно, если переключиться на Release, то ошибки всего четыре (по факту две):
(http://i7.pixs.ru/storage/5/3/9/177png_5785797_11661539.png) Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 17:20 Вы готовые библиотеки скачивали или сами собирали. Если второе, то каким компилятором (из какой директории)?
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:23 Вы готовые библиотеки скачивали или сами собирали. Если второе, то каким компилятором (из какой директории)? - скачал, распаковал - зашёл в папку: C:\bullet-2.82-r2704 - ввёл команды: cmake -DINSTALL_LIBS=ON make -j4 make install Как в инструкции: http://bulletphysics.org/mediawiki-1.5.8/index.php/Installation Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:28 Правда, когда вводил команду cmake, то забыл '-G'. Надеюсь, это не из-за этого. Что ключ '-G' обозначает?
Цитировать -G <generator-name> = Specify a makefile generator. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:33 Сейчас попробовал выполнить такие команды:
cmake -G "Unix Makefiles" -DINSTALL_LIBS=ON make -j4 make install Ничего не изменилось. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:36 Я из этой директории выполняю команды:
(http://i6.pixs.ru/storage/9/9/8/179png_2547503_11661998.png) Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:43 Может здесь что-то не так?
Цитировать C:\bullet-build>cmake /cygdrive/c/bullet-2.82-r2704 -G "Unix Makefiles" -DINSTALL_LIBS=ON CMake Warning at /usr/share/cmake-2.8.11.2/Modules/Platform/CYGWIN.cmake:15 (message): CMake no longer defines WIN32 on Cygwin! (1) If you are just trying to build this project, ignore this warning or quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in the CMake cache. If later configuration or build errors occur then this project may have been written under the assumption that Cygwin is WIN32. In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead. (2) If you are developing this project, add the line set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required at the top of your top-level CMakeLists.txt file or set the minimum required version of CMake to 2.8.4 or higher. Then teach your project to build on Cygwin without WIN32. Call Stack (most recent call first): /usr/share/cmake-2.8.11.2/Modules/CMakeSystemSpecificInformation.cmake:36 (include) CMakeLists.txt:7 (PROJECT) -- Could NOT find OpenGL (missing: OPENGL_gl_LIBRARY) OPENGL NOT FOUND -- WARNING: you are using the obsolete 'GLU' package, please use 'OpenGL' instead -- Could NOT find GLUT (missing: GLUT_glut_LIBRARY GLUT_INCLUDE_DIR) GLUT NOT FOUND -- Configuring done -- Generating done -- Build files have been written to: /cygdrive/c/bullet-2.82-r2704 C:\bullet-build> Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Old от Апрель 12, 2014, 17:52 Думаю, что по умолчанию у вас стоит компилятор из cygwin и bullet собирался им, а вашу программу вы собираете компилятором из поставки Qt. Может из-за этого не линкуется.
Попробуйте собирать и библиотеку и программу одним компилятором. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 12, 2014, 17:55 Спасибо! Надеюсь, прокатит :)
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: kibsoft от Апрель 12, 2014, 20:34 Под виндой еще можно так попробовать:
Цитировать LIBS += -L$${BULLET_LOCATION}/lib -llibBulletDynamics Т.е. полное название файла. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 08:29 Под виндой еще можно так попробовать: Там фишка в том, что если имя написано неверно, то выводится сообщение "не могу найти"Цитировать LIBS += -L$${BULLET_LOCATION}/lib -llibBulletDynamics Т.е. полное название файла. Нашёл подробную пошаговую инструкцию: http://bulletphysics.org/mediawiki-1.5.8/index.php/Creating_a_project_from_scratch Установил msys и указал его в инструкции выше. Генерация выполняется (для этого отключаю в настройках Glut и построение всех примеров с Demos). Но по указанному пути в папке lib, для результирующих файлов - пусто. Эта проблема слишком тяжёлая для меня. Оставлю до лучших времён. Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Igors от Апрель 13, 2014, 08:54 Можно просто прямолинейно подключать исходники/хедеры в проект, работает. Нужна только либа для OpenGL. Прекрасный проект, по исходникам можно много чему научиться.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 10:13 Спасибо огромное! Буду добавлять исходники по мере требования (выскакивания ошибок). Когда-то же они закончатся :) За одно, лучше познакомлюсь со структурой проекта. Это прекрасное решение, так как даёт возможность продвигаться дальше :)
У меня такое ощущение, что не все библиотеки собрались. Вот какие есть: -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath А в проекте "Hello, World" подключается: #include <btBulletDynamicsCommon.h> Если посмотреть в исходники, то там есть такие папки: (http://i.pixs.ru/storage/9/6/2/180png_3328108_11669962.png) Я предполагаю, что должна была собраться ещё библиотека "-lBulletDynamicsCommon". Как раз в релизе и выскакивает сообщение, что невозможно найти реализацию одной из функций из этой библиотеки. Хорошо, что в TotalCommander есть поиск текста по содержимому файлов. Добавлять исходников много приходится, но радует то, что в Bullet не так уж много файлов :) Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 10:27 Я в предыдущем сообщении, по-моему, глупость написал. Bullet3Common не имеет никакого отношения к btBulletDynamicsCommon.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Igors от Апрель 13, 2014, 11:06 У меня такое ощущение, что не все библиотеки собрались. Вот какие есть: -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath Зачем? В данном случае не видно резонов связываться с какими-то либами, просто добавляете в проект фолдеры с нужными исходниками. Т.к. "hello" не имеет превью (насколько я помню), то и OpenGL либа не нужна, для др примеров нужно будет подключить.Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 11:08 Меня пугает, что добавлению нет конца. Он всё требует и требует. Я уже больше десятка .h .cpp подключил.
Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Igors от Апрель 13, 2014, 11:15 Меня пугает, что добавлению нет конца. Он всё требует и требует. Я уже больше десятка .h .cpp подключил. То мало, подключайте сразу пачками (фолдерами).Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 11:21 Меня пугает, что добавлению нет конца. Он всё требует и требует. Я уже больше десятка .h .cpp подключил. То мало, подключайте сразу пачками (фолдерами).Код: SOURCES += ../FiveAndFive/FiveAndFive.cpp Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: Igors от Апрель 13, 2014, 11:51 Я работаю в Xcode, там все подключение заняло неск минут
- прописал в преференсах путь Bullet (src) - дропнул фолдеры в проект См аттач как это выглядит. Как это сделать в Вашей IDE - не знаю, но полагаю что тоже возможно и несложно Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 13, 2014, 16:28 Igors, огромное спасибо!
Подскажите, пожалуйста, кто-нибудь, как в Qt Creator подключить все cpp-файлы напрямую? То есть всю папку src. А не увеличит ли это время сборки? Или компилятор собирает только те cpp-файлы, которые используются? Если кто-то встречал подробную пошаговую инструкцию, как собрать Bullet и использовать в Qt (MinGW), то поделитесь, пожалуйста, ссылками. Я потратил много времени, но всё же собрал вместе все нужные файлы и запустил этот пример: http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World Исходники: https://github.com/8Observer8/HelloBullet Название: Re: Приложение Hello, World! для Bullet в Qt Отправлено: 8Observer8 от Апрель 28, 2014, 21:11 Может кому-нибудь пригодится информация.
Мне удалось собрать статическую библиотеку из исходников Bullet с помощью этой видео-инструкции: http://www.youtube.com/watch?v=37QvVrJnwQw При сборке библиотеки включил в проект из "src" все файлы (все .h и .cpp) кроме модуля "Bullet3OpenCL" Файлы подключал через Qt Creator "Add Existing Files..." Этот пример моделирует падение шара с радиусом 1 метр c высоты 50 метров: http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World Я использовал пример выше и нарисовал с помощью Qwt график падения. Исходники примера с графиком (в файле pro подключаю все заголовочные файлы, кроме "Bullet3OpenCL"): https://github.com/8Observer8/bullet_PlotOfFalling (http://i7.pixs.ru/storage/3/1/2/194png_2751907_11889312.png) |