【问题标题】:Access violation trying to create an SFML window尝试创建 SFML 窗口的访问冲突
【发布时间】:2016-09-13 01:35:03
【问题描述】:

我已经关注(两次,现在)setup guide,以便在 Visual Studio 中启动和运行 SFML。根据指南,我已确保在项目设置中指向正确的 .lib 文件和目录,并且所需的 .dll 存在于应用程序的工作目录中。

我正在尝试执行以下操作:(雄心勃勃,我知道...)

#include "stdio.h";
#include <iostream>;
#include <SFML/Graphics.hpp>;

int main ()
{
    sf::RenderWindow window( sf::VideoMode( 640, 480 ), "Title" );
    std::cin.get();
}

编译成功,但是应用一启动,我得到:

在 D20 RPG.exe 中的 0x56D5EEB6 (sfml-system-d-2.dll) 处引发异常:0xC0000005:访问冲突读取位置 0xCCCCCCD8。

注释第一行后,应用程序启动和结束都没有问题。

我需要找到 SFML 源并自己编译吗?这是一个相当庞大的库,有很多依赖项,所以我一直在避免这样做,除非有人认为它可能会有所帮助。我在 C++ 和 VS 方面的经验很浅,我认为在解决这个问题之前我更有可能引入更多问题。

【问题讨论】:

  • 您使用哪种 IDE 和编译器?据我所知,SFML 对每个编译器都有不同的下载。
  • Visual Studio 社区 15(版本 14.0.24720.00 更新 1)。编译器可以是它用于空的 Visual C++ 项目的任何编译器。我实际上不确定在哪里可以找到更多信息。

标签: c++ visual-studio window sfml access-violation


【解决方案1】:

我能够通过创建一个新的空控制台应用程序项目并使用 NuGet 包管理器界面安装 sfml-graphics、sfml-window 和 sfml-system 包来使此代码正常工作。

【讨论】:

  • 可能下载了错误的库。如果您在 Visual Studio 中创建了一个 32 位项目,请确保您选择了 32 位 SFML(或者您只是使用了 nuget)。这是大多数程序的最佳选择。
猜你喜欢
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多