【问题标题】:How to create a World in Box2D without leaving Unresolved Externals如何在 Box2D 中创建一个世界而不留下未解决的外部
【发布时间】:2020-03-25 21:31:39
【问题描述】:

我一直在研究 2D 物理引擎,然后 Box2D 出现了。我一直在阅读它并尝试进行设置,但遇到了问题。

  1. 使用 premake5 创建构建
  2. 打开一个新的 Visual Studio 2019 项目
  3. 将附加包含目录设置为 Box2D 标头文件夹
  4. 将附加库目录(在链接器下)设置为包含 lib 文件 (Box2D.lib) 的文件夹
  5. 将附加依赖项设置为 Box2D.lib

完成这一切后,我似乎能够毫无问题地调用和创建 Box2d 变量和函数。但是当我试图建立一个世界时,它开始导致错误。

错误

LNK1120 2 unresolved externals          

LNK2019 unresolved external symbol "public: __thiscall b2World::b2World(struct b2Vec2 const &)" (??0b2World@@QAE@ABUb2Vec2@@@Z) referenced in function "public: void __thiscall Game::run(void)" (?run@Game@@QAEXXZ)                

LNK2019 unresolved external symbol "public: __thiscall b2World::~b2World(void)" (??1b2World@@QAE@XZ) referenced in function "public: void __thiscall Game::run(void)" (?run@Game@@QAEXXZ)       

我正在建立的项目是尝试将 SFML 与 Box2d 一起使用。在生成的文件夹中运行测试平台是可行的,但我试图弄清楚如何在需要时将引擎移植到其他项目中。该解决方案按预期工作。但是一旦创建了 World 变量,它就会产生错误。

但是创建和设置 b2Vec2 和 b2BodyDef 变量不会导致任何问题。我不太确定可能是什么原因,我已经在线查看了各种指南,检查了路径是否正确并重新生成了库文件。

我怀疑问题在于 Box2D 被配置为在 x64 中构建,而我的项目正在 x86 中构建。我想知道是否有人知道在 x86 中运行 Box2D 或类似的方法。

代码

void Game::run()
{
    sf::Clock clock;
    sf::Time timeSinceLastUpdate = sf::Time::Zero;
    sf::Time timePerFrame = sf::seconds(1.f / 60.f); // 60 fps
    b2Vec2 gravity(0.0f, -10.0f);


    b2World myWorld = b2World(gravity); //The errors are cause by this line.

    // Define the ground body.
    b2BodyDef groundBodyDef;
    groundBodyDef.position.Set(0.0f, -10.0f);



    while (m_window.isOpen())
    {
        processEvents(); // as many as possible
        timeSinceLastUpdate += clock.restart();
        while (timeSinceLastUpdate > timePerFrame)
        {
            timeSinceLastUpdate -= timePerFrame;
            processEvents(); // at least 60 fps
            update(timePerFrame); //60 fps
        }
        render(); // as many as possible
    }

}

【问题讨论】:

标签: c++ visual-studio box2d sfml


【解决方案1】:

找到了解决办法。

问题是由针对 x64 系统的测试台生成的库文件引起的。在 Win(32) 模式下重新生成库文件会生成正确的库文件,该库文件解决了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多