这是代码:
Engine.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 的链接器中。
Steps:
- 打开项目属性页。(在 vs 中按 Alt+F7)。
- 展开“配置属性”。
- 展开“链接器”。
- 您将在“链接器”下找到“输入”项,然后单击“输入”。
- 在右侧,您会发现一个“附加依赖项”项。
- 在此处添加您的 lib 文件名。(例如 lib1.lib;lib2.lib...,用分号分隔库)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)