gpt4 book ai didi

c++ - Netbeans C++ 项目上的 SFML 错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:21 30 4
gpt4 key购买 nike

我正在使用 Netbeans(在 Windows 上)开发 C++。我正在努力让 SMFL 发挥作用。

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>

using namespace std;

/*
*
*/
int main(int argc, char** argv)
{
RenderWindow window(VideoMode(600, 800), "TITLE");
cout << "Hello World!";

return 0;
}

当我启动应用程序时,出现以下错误。

main.cpp:31: undefined reference to `__imp__ZN2sf6StringC1EPKcRKSt6locale'
main.cpp:31: undefined reference to `__imp__ZN2sf9VideoModeC1Ejjj'
main.cpp:31: undefined reference to `__imp__ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'
main.cpp:31: undefined reference to `__imp__ZN2sf12RenderWindowD1Ev'
main.cpp:31: undefined reference to `__imp__ZN2sf12RenderWindowD1Ev'

第31行是

RenderWindow window(VideoMode(600, 800), "TITLE");

我在 C++ 编译器中添加了 SFML/include 目录,在链接器中添加了 SFML/lib,你能帮帮我吗?

编辑:在重试添加 lib 和 include 文件夹后,现在我得到:“加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录”

最佳答案

您必须告诉 NetBeans 三件事:

  • SFML 包含文件的目录
  • SFML 库目录
  • 要链接的 SFML 库列表

看起来您已经知道如何执行 #1,但为了以防万一,我会重复所有内容。所有这些设置都应使用项目属性完成 - 右键单击​​您的项目名称,然后打开属性设置窗口。您需要在两个 Pane 中添加内容 - “C++ 编译器”和“链接器”。

“C++ 编译器”面板是您首先需要的。找到“Include Directories”行并单击带有三个点的正方形(目录选择器)- 然后添加 SFML“include”目录。在我的例子中,这个 Pane 如下:

C++ Compiler Setup Pane

“链接器” Pane 是下一个 Pane 。找到“附加库目录”并添加 SFML“lib”目录 - 也使用目录选择器。然后找到“Libraries”行并添加至少三个库——“sfml-graphics”、“sfml-window”和“sfml-system”。为此,您需要使用稍微复杂一些的选择器,您需要的按钮是“添加库...” - 请参见此处的第三张图片。 库的顺序很重要。在我的例子中,这个 Pane 如下:

Linker Setup Pane

这是库选择器 - 使用“添加库...”按钮

Libraries Chooser

此外,在您的示例中,您需要为 SFML 类型使用前缀“sf::”:

sf::RenderWindow window(sf::VideoMode(600, 800), "TITLE");

添加。看起来(从评论中)编译和链接问题已经解决,但是应用程序仍然找不到 SFML 动态库。此问题不在 NetBeans 范围内 - 您只需确保包含动态库的 SFML 目录已添加到 Windows 系统路径。

这个目录名可能很长,所以添加到路径时很容易打错。有一种简单的方法可以验证这一点 - Windows 工具 where.exe。一些 Windows 系统没有这个工具 - 所以你可以通过 path 命令输出当前路径,然后将路径的 SFML 相关部分作为参数复制粘贴到 Unix ls 命令(在 MinGW MSYS 环境中)。通常 ls 会显示 SFML 动态库列表(扩展名为 dll)。

关于c++ - Netbeans C++ 项目上的 SFML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170881/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com