【问题标题】:Configuring SFML on Visual Studio manually在 Visual Studio 上手动配置 SFML
【发布时间】:2019-07-14 10:15:14
【问题描述】:

当人们尝试手动配置他们的 VS 项目时,这篇问答帖子来自 questionslotslots,与 库相关。有时答案不完整或过于具体。

我想在一篇文章中编译如何配置 VS 以便能够静态和动态地使用 SFML 库。

所以:

1.如何以一般方式动态地使用 库配置我的VS 项目?

2。如何以一般方式静态使用 库配置我的VS 项目?

【问题讨论】:

  • 对于 MSVC,我使用 vcpkgvcpkg integrate installvcpkg install sfml。之后,每个新项目 VS 都会自动为您包含和链接 SFML。当然不是静态链接。
  • @tntxtnt 我去看看,谢谢!通常我喜欢通过 NuGet 包安装SFML,但不是每个人都使用它。

标签: sfml sfml sfml visual-studio libraries sfml


【解决方案1】:

首先,我建议仔细遵循SFML tutorial关于在Visual Studio中配置库的内容,如果出现问题,请查看此答案。


我将这个答案分为两组,如何将配置为动态库以及如何将其配置为作为静态库

常用步骤

  1. 让我们创建一个 VS 项目(我将使用 VS2013 和 SFML 2.5.1,但与其他版本几乎相同)。将其创建为 ConsoleApplication 并检查 Empty Project

  2. 下载libraries,最好是最新的稳定版本,选择相应的系统(在我的例子中是Visual C++ 12 (2013) - 64 位)。将此文件提取到您的 .vcxproj 文件所在的位置。这将根据您的版本创建一个名为 SFML-X.X.X 的文件夹。

  3. 下载external libraries,在我的例子中是64 bits 版本。在库文件夹中创建一个名为 extlib 的文件夹,并将这个外部库放在那里。

  4. 创建一个main.cpp 文件,并粘贴SFML tutorials 中的示例代码。

#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 作为动态库

  1. 转到构建->配置管理器。如果您使用的是 64 位库,首先您应该创建一个新的解决方案平台。点击Active Solutions Platform->New,选择x64Win32配置复制。我更喜欢取消选中 创建新的项目平台

  2. 创建 Debug-DynamicRelease-Dynamic 编译配置文件。选择您的活动解决方案平台后,单击(项目的)配置新建。您可以将其命名为 Debug-Dynamic 并从 Debug 配置中复制它(另外,取消选中 Create new...)。重复创建动态发布配置。

  3. 打开项目属性->调试。选择 Debug-Dynamic 配置并使用此值 PATH=$(ProjectDir)\SFML-2.5.1\bin;%PATH% 修改字段 Environment。这将指示 VS 在哪里可以找到 .dll 库。

  4. C/C++ 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\include 来修改 其他包含目录 字段。这将指示 VS 的 .hpp 文件所在的位置。

  5. Linker 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\lib 来修改 其他库目录 字段。这将指示 VS 在哪里可以找到 .lib 文件。

  6. 最后,在 Linker->Input 上,通过添加所有需要的 .lib 文件来修改 Additional dependencies 字段:

    sfml-audio-d.lib
    sfml-graphics-d.lib
    sfml-network-d.lib
    sfml-system-d.lib
    sfml-window-d.lib

注意-d后缀表示调试库

  1. 使用 动态发布 配置重复步骤 3 到 6。 注意,在第 6 步中,库文件没有 -d 后缀,因为它们是发布库

SFML 作为静态库

  1. 转到构建->配置管理器。创建 Debug-StaticRelease-Static 编译配置文件。选择您的活动解决方案平台后,单击(项目的)配置新建。您可以将其命名为 Debug-Static 并从 Debug 配置中复制它(另外,取消选中 Create new...)。重复创建 Release-Static 配置。

  2. 打开 Project Properties 并选择 Debug-Static 配置。在 C/C++ 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\include 来修改 其他包含目录 字段。这将指示 VS .hpp 文件所在的位置。

  3. C/C++ 部分->预处理器* 上,通过添加 SFML_STATIC 定义来修改 预处理器定义 字段。这将指示 SFML 将被静态编译的预处理器。

  4. Linker 部分,通过添加此路径 $(ProjectDir)\SFML-2.5.1\extlib;$(ProjectDir)\SFML-2.5.1\lib; 来修改 其他库目录 字段。这将指示 VS 在哪里可以找到来自 外部来源 和 SFML 的 .lib 文件。

  5. 最后,在 Linker->Input 部分,用所有需要的 .lib 文件修改 Additional dependencies 字段:

    sfml-audio-s-d.lib
    sfml-graphics-s-d.lib
    sfml-network-s-d.lib
    sfml-system-s-d.lib
    sfml-window-s-d.lib
    flac.lib
    freetype.lib
    ogg.lib
    openal32.lib
    opengl32.lib
    vorbis.lib
    vorbisenc.lib
    vorbisfile.lib
    winmm.lib
    gdi32.lib
    ws2_32.lib

注意-d后缀表示调试库

注2-s后缀表示静态库

  1. 使用 Release-Static 配置重复步骤 2 到 5。 注意,在第 5 步,库文件没有 -d 后缀,因为它们是发布库,但它们会保留 -s 后缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多