您好我想在c ++中为图形项目添加SFML但是当我尝试运行som基本代码时出现此错误:
free():指针无效:0x00000000009ace48 ***
在c ++编译器下的netbeans属性中,我在include目录中添加了SFML / include文件夹
在链接器和另外的库目录下,我有sfml / lib文件夹
最后在链接器和库中我按顺序添加了sfml-graphics-s-d,sfml-audio-s-d,sfml-network-s-d,sfml-window-s-d和sfml-system-s-d。
这是我想要运行的代码:
#include <cstdlib>
#include <SFML/Graphics.hpp>
/*
*
*/
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
SFML窗口打开并直接关闭然后我得到:
跑完了;中止;核心倾销;实时:240ms;用户:20ms;系统:30ms
和我在开始时告诉的错误
任何人都知道我的是否添加了库错误或它可能是什么。谢谢你的帮助
编辑: 现在我已经通过使用makefile并在文本编辑器中编写它来解决它,但我想知道我是否可以在netbeans中使用相同的方法?
这就是我的makefile外观和工作方式,但我希望能够在netbeans中完成所有工作:
all:
g++ -std=c++11 *.cpp -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
clean:
rm -rf *.o sfml-app
答案 0 :(得分:0)
我认为你添加了错误的库,在动态链接的情况下你应该使用“-d”库。 “-s-d”库用于静态链接。如果要使用静态链接,则需要为项目中的预处理器定义SFML_STATIC宏。您应该添加其他库,例如opengl32.lib和其他库。