【问题标题】:Cant run SFML library in netbeans on ubuntu无法在 ubuntu 上的 netbeans 中运行 SFML 库
【发布时间】:2016-12-09 22:55:24
【问题描述】:

您好,我想为 C++ 中的图形项目添加 SFML,但是当我尝试运行 som 基本代码时出现此错误:

free():无效指针:0x00000000009ace48 ***

在 c++ 编译器下的 netbeans 属性中,我在包含目录中添加了 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

【问题讨论】:

    标签: c++ ubuntu netbeans sfml


    【解决方案1】:

    我认为你添加了错误的库,你应该在动态链接的情况下使用“-d”库。 “-s-d”库用于静态链接。如果您想使用静态链接,您需要在项目中为预处理器定义 SFML_STATIC 宏。并且您应该添加其他库,例如 opengl32.lib 等。

    【讨论】:

    • 我更改为“-d”文件但没有帮助,如何添加 opengl 库?为什么我在使用makefile时需要添加它?
    • 对于任何绊倒谷歌这个答案的人,就像我一样:SFML 的 -d 文件是库的调试版本,与动态链接无关(例如 sfml-window = 动态链接, sfml-window-d = 动态链接,调试版本,sfml-window-s = 静态链接,sfml-window-sd = 静态链接,调试版本)。
    猜你喜欢
    • 2011-06-06
    • 2012-09-27
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多