c++ - 错误LNK2001 : unresolved external symbol "public: static class sf::RenderStates const sf::RenderStates::Default"

标签 c++ sfml

代码如下:

引擎.h

#include <SFML/Audio.hpp>
#include <SFML/Config.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

class Engine
{
public:
    Engine(sf::RenderWindow & wd);
    void run(sf::RenderWindow & wd);

    sf::Sprite player;
    sf::Texture playerTexture;

};

引擎.cpp

#include "Engine.h"

Engine::Engine(sf::RenderWindow & wd) : player(), playerTexture()
{

}

void Engine::run(sf::RenderWindow & wd)
{
    if (!playerTexture.loadFromFile("image/char.png")) {}
    player.setTexture(playerTexture);

    while (wd.isOpen())
    {
        sf::Event event;
        while (wd.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                wd.close();
        }

        wd.clear();
        wd.draw(player);
        wd.display();
    }
}

main.cpp

#include <SFML/Audio.hpp>
#include <SFML/Config.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

#include "Engine.h"

int main()
{
    sf::RenderWindow * wd = new sf::RenderWindow(sf::VideoMode(800, 600), "Lumia");
    Engine * eg = new Engine(*wd);
    eg->run(*wd);

    return EXIT_SUCCESS;
}

如果我删除 wd.draw(player);从Engine.cpp来看,这个错误不会发生,似乎我无法绘制任何东西,我是否定义了默认构造函数并且没有调用它?或者我以错误的方式传递参数?请解释一下为什么会出现这个错误并给我一个合理的解决方案,感谢进一步的解答。

OBS:SFML 2.1、Microsoft Visual Studio 2013、i7、8GB 内存、GeForce gtx850M 4GB 视频内存、Windows 8.1。

最佳答案

您应该将 *.lib 文件的文件名添加到 vs 的链接器中。

步骤:

  1. 打开项目属性页。(在 vs 中按 Alt+F7)。
  2. 展开“配置属性”。
  3. 展开“链接器”。
  4. 您将在“链接器”下找到“输入”项,然后单击“输入”。
  5. 在右侧,您会发现一个“附加依赖项”项。
  6. 在此处添加您的 lib 文件名。(例如 lib1.lib;lib2.lib...,用分号分隔库)。

关于c++ - 错误LNK2001 : unresolved external symbol "public: static class sf::RenderStates const sf::RenderStates::Default",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594261/

相关文章:

c++ - 构造函数的重新定义

C++ 创建图像

C++/SFML2 Sprite 没有显示

c++ - 按下键时窗口停止刷新

c++ - 将 SFML 与 GitHub 上的 C++ 项目同步

c++ - 将队列用作全局队列并从 main 处理其内容

c++ - 这是未定义的行为吗?为什么?

c++ - SFML undefined reference

c++ - 如何在屏幕上多次复制一个 Sprite ,每个 Sprite 都具有相同的代码?

c++ - dynamic_cast 上的 SIGSEGV