Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7

Box2d функция SetUserData()

23.12.2019, 01:10. Показов 2699. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стараюсь по максимуму своими силами, иногда заглядываю сюда
Но вот пришел момент без Вас мне не обойтись -
Помогите, пожалуйста

проблема с функцией b2Body::SetUserData(void*)

нужно задать b->SetUserData("ball")

на vs17 выдавал что невозможно преобразовать const char[5] в void*

на vs13 выдаёт 19 ошибок LNK2001 и LNK2019 unresolved external symbol

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <SFML/Graphics.hpp>
#include <Box2D/Box2D.h>
 
using namespace sf;
 
const float SCALE = 30.f;
const float DEG = 57.29577f;
 
b2Vec2 Gravity(0.f, 9.8f);
b2World World(Gravity);
 
int main()
{
    RenderWindow window(sf::VideoMode(800, 600), "BlobVol!");
    window.setFramerateLimit(60);
 
    Texture t1, t2;
 
    t1.loadFromFile("C:\\Users\\sssam\\source\\repos\\Project3\\images\\background.png");
    t2.loadFromFile("C:\\Users\\sssam\\source\\repos\\Project3\\images\\ball.png");
 
    Sprite sBackground(t1), sBall(t2);
    sBall.setOrigin(32, 32);
 
    b2PolygonShape shape;
    shape.SetAsBox(30 / SCALE, 30 / SCALE);
    b2BodyDef bdef;
    bdef.type = b2_dynamicBody;
    bdef.position.Set(5, 1);
    b2CircleShape circle;
    circle.m_radius = 32 / SCALE;
    b2Body *b = World.CreateBody(&bdef);
    b2FixtureDef fdef;
    fdef.shape = &circle;
    fdef.restitution = 0.95;
    fdef.density = 0.2;
    b->CreateFixture(&fdef);
 
    b->SetUserData("ball");
 
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        World.Step(1 / 60.f, 8, 3);
 
        window.draw(sBackground);
        for (b2Body* it = World.GetBodyList(); it != 0; it = it->GetNext())
        {
            b2Vec2 pos = it->GetPosition();
            float angle = it->GetAngle();
 
            if (it->GetUserData() == "ball")
            {
                sBall.setPosition(pos.x*SCALE, pos.y*SCALE);
                sBall.setRotation(angle*DEG);
                window.draw(sBall);
            }
 
        }
        window.display();
    }
 
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2019, 01:10
Ответы с готовыми решениями:

Анимация в Box2D
Наткнулась на видео с анимацией по Box2D. Только начала изучать и не понимаю, как работает этот проект. Поиски исходников не увенчались...

Запуск приложения с использованием Box2D
Здравствуйте, пользователи форума! Сразу предупреждаю, что я в этом деле абсолютный НОВИЧОК. При компиляции исходного кода с...

Сборка Box2D под MinGW
Как собрать из исходников файл Box2D.dll под MinGW, чтобы можно было в свои проекты подключать?

11
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2019, 01:19
C++
1
2
3
char ball_str[] = "ball";
//...
b->SetUserData(ball_str);
1
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
23.12.2019, 09:50  [ТС]
Пробовал так, ошибка и на 13 и на 17 LNK2001 LNK2019 Неразрешенный внешний символ

Добавлено через 1 час 28 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
char ball_str[] = "ball";
//...
b->SetUserData(ball_str);
Спасибо, но не помогает и на 13 и на 17 LNK2001 2019 неразрешенный внешний символ
Сейчас подобную тему про билд бокс2д за 2015г открыл(там кстати тоже Croessmah присутствует)
там написано в 99% нет нужной библиотеки
Я новичок Box2d толком билд тестплощадки сделать не получилось, и я просто закинул в include папку с source code Box2d,

Сейчас из темы за 2015 Box2d как установить в проект? закинул Box2d.lib в input linker'a, но он для 2012

Вобщем не помогло
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2019, 14:26
Цитата Сообщение от sssome Посмотреть сообщение
Спасибо, но не помогает и на 13 и на 17 LNK2001 2019 неразрешенный внешний символ
Это уже ошибка другого рода. Вы не подключили библиотеку, либо библиотека не для Вашего компилятора, либо подключили неправильно, либо не то.
Так что за ошибку пишет линковщик?
1
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
24.12.2019, 09:53  [ТС]
Я так и понял, но где взять нужную библиотеку для 2017? Прошелся по всем гайдам, они походу толи устарели толи я что-то пропустил, пробовал собрать билд box2D с помощью premake5, но в гайдах в директории box2D-master по гайдам присутствуют папки glew, glfw, imgui, версии и содержание которых и источник не указывается, я так понял, что они в предидущих версиях были на gitHub, а теперь нет, какие glew glfw и imgui туда закидывать у меня нет догадок
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
24.12.2019, 10:12  [ТС]
Вот так выглядит моя папка билд а вот так в гайде
Миниатюры
Box2d функция SetUserData()  
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.12.2019, 11:23
Цитата Сообщение от sssome Посмотреть сообщение
Вот так выглядит моя папка билд а вот так в гайде
Какая разница что там в гайде, если тебе нужна только Box2D.lib:
1) Открой Box2D.sln в студии и выбери нужную конфигурацию(debug/release x86/x64)
2) ПКМ на проекте Box2D -> собрать

или проще: сборка -> пакетная сборка -> галочки, что нужно -> собрать

3) библиотека появится в папке bin (в каталоге с текущим проектом)
1
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
24.12.2019, 17:43  [ТС]
Цитата Сообщение от zayats80888 Посмотреть сообщение
Какая разница что там в гайде, если тебе нужна только Box2D.lib:
1) Открой Box2D.sln в студии и выбери нужную конфигурацию(debug/release x86/x64)
2) ПКМ на проекте Box2D -> собрать

или проще: сборка -> пакетная сборка -> галочки, что нужно -> собрать

3) библиотека появится в папке bin (в каталоге с текущим проектом)
Как мне понятно по гайду для сборки box2d должны быть предварительно откомпилированы glew glfw imgui, какие именно и где их взять не понял. В гайдах они уже в папке билд, я делал , билд через premake5 и у меня их нет

Если просто сделать как сказали вы выдает 42 одной и той же ошибки невозможно открыть файл включение stddef.h
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.12.2019, 18:04
Цитата Сообщение от sssome Посмотреть сообщение
Как мне понятно по гайду для сборки box2d должны быть предварительно откомпилированы glew glfw imgui
Нет. Я же сказал собирать только Box2D.
Цитата Сообщение от sssome Посмотреть сообщение
невозможно открыть файл включение stddef.h
х.з. Попробуй ПКМ по проекту, и для всех конфигураций и платформ, в общих свойствах выбрать пакет SDK, который доступен студии из списка

Добавлено через 9 минут
Сам только что скачал с гитхаба, собрал в 17 студии без проблем.
1
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
25.12.2019, 11:15  [ТС]
Цитата Сообщение от zayats80888 Посмотреть сообщение
Нет. Я же сказал собирать только Box2D.

х.з. Попробуй ПКМ по проекту, и для всех конфигураций и платформ, в общих свойствах выбрать пакет SDK, который доступен студии из списка

Добавлено через 9 минут
Сам только что скачал с гитхаба, собрал в 17 студии без проблем.
Попробовал собрать только проект теперь 100500 таких ошибок не видит кучу всего, но вроде и что-то видит.
Мозги подварились уже что откуда куда

Я совсем новичок, только перешел на студию 2010 две недели, мне вообще нужно 2017 осваивать
Наверное, следует почитать про саму среду, тк я этого не делал, а уже не первый раз трачу кучу времени нервов и сил в подобных ситуациях. Как считаете для начала по https://docs.microsoft.com/ пройтись по этой теме или посоветуете что-нибудь другое?
Миниатюры
Box2d функция SetUserData()   Box2d функция SetUserData()   Box2d функция SetUserData()  

Box2d функция SetUserData()  
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.12.2019, 11:28
Лучший ответ Сообщение было отмечено sssome как решение

Решение

sssome, на первом скрине у тебя стоит версия пакета SDK 8.1, я же писал, попробуй там из выпадающего списка выбрать актуальную для твоей студии. Если не поможет - переустанови студию.
1
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 7
26.12.2019, 10:17  [ТС]
Заработало! Как хорошо, что существуют такие люди как зайцы))!!! Спасибо, Заятс!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.12.2019, 10:17
Помогаю со студенческими работами здесь

Не получается создать мир в Box2D
скачал эту хорошую и удобную библиотеку. у меня версия 2.3.0. читаю документацию с сайтов: Руководство по Box2D и Box2D в...

Box2d как установить в проект?
как Подключить box2d к VS 2012, искал в гугле там говорится нужно исходники скаченные с офф сайта скомпилировать Cmake. ну я попробывал,...

Ненулевая масса статического объекта в Box2D
Собственно как реализовать сабж?

Зачем нужно компилировать библиотеку C++ Box2d?
Мне интересна причина того, почему разработчики некоторых C++ библиотек (в моей ситуации Box2d) не дают dll или lib библиотеки, а дают...

Как заставить тело отпрыгивать от земли в Box2D?
Имеется шар, нужно что бы при падении он отпрыгивал.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru