Main.exe中0x6FDFDBF0(vcruntime140.dll)处引发异常 我正在为C++中的一个作业做准备,它包含了一个骨架,我们必须从它开始,也包括我正确导入的SFML库。该框架由2.cpp文件、一个.h头文件和/Assets中的所有文件组成。下面列出了三个文件

Main.exe中0x6FDFDBF0(vcruntime140.dll)处引发异常 我正在为C++中的一个作业做准备,它包含了一个骨架,我们必须从它开始,也包括我正确导入的SFML库。该框架由2.cpp文件、一个.h头文件和/Assets中的所有文件组成。下面列出了三个文件,c++,sfml,C++,Sfml,Main.cpp #include "Game.h" int main() { Game theGame; theGame.loop(); return 0; } Game.cpp #include <iostream> #include <fstream> #include "Game.h" Game::Game() { std::ifstream fileHndl; fileHndl.open("Assets

Main.cpp

#include "Game.h"

int main()
{

    Game theGame;

    theGame.loop();

    return 0;

}
Game.cpp

#include <iostream>
#include <fstream>

#include "Game.h"

Game::Game()
{

    std::ifstream fileHndl;

    fileHndl.open("Assets/mapdata.txt");

    fileHndl >> mapCols;
    fileHndl >> mapRows;

    playerX = mapCols / 2;
    playerY = mapRows / 2;

    mapData = new int *[mapRows];
    for (int i = 0; i < mapRows; i++) {
        mapData[i] = new int[mapCols];
    }

    for (int i = 0; i < mapRows; i++) {
        for (int j = 0; j < mapCols; j++) {
            fileHndl >> mapData[i][j];
        }
    }

    window.create(sf::VideoMode(1280, 1024), "COMP2501 Demo");
    window.setFramerateLimit(5);

    playerTexture.loadFromFile("Assets/actor.png");
    playerTexture.setSmooth(true);
    playerSprite.setTexture(this->playerTexture);

    floorTexture.loadFromFile("Assets/floor.png");
    floorTexture.setSmooth(true);
    crateTexture.loadFromFile("Assets/crate.png");
    crateTexture.setSmooth(true);

    mapSprites = new sf::Sprite *[mapRows];
    for (int i = 0; i < mapRows; i++) {
        mapSprites[i] = new sf::Sprite[mapCols];
    }

    for (int i = 0; i < mapRows; i++)
    {
        for (int j = 0; j < mapCols; j++)
        {
            mapSprites[i][j].setPosition(j * 64, i * 64);
            if (mapData[i][j] == 1)
            {
                mapSprites[i][j].setTexture(this->floorTexture);
            }
            else
            {
                mapSprites[i][j].setTexture(this->crateTexture);
            }
        }
    }

}

Game::~Game()
{ }

void Game::loop()
{

    while (window.isOpen())
    {
        inputs();
        update();
        render();
    }

}

void Game::inputs()
{

    sf::Event event;

    while (window.pollEvent(event))
    {
        switch (event.type)
        {
            case sf::Event::Closed:
                window.close();
                break;
        }
    }

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
    {
        if (this->mapData[this->playerX - 1][this->playerY] == 1)
        {
            this->playerX--;
        }

    }
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {
        if (this->mapData[this->playerX + 1][this->playerY] == 1)
        {
            this->playerX++;
        }
    }

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        if (this->mapData[this->playerX][this->playerY - 1] == 1)
        {
            this->playerY--;
        }

    }
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
    {
        if (this->mapData[this->playerX][this->playerY + 1] == 1)
        {
            this->playerY++;
        }
    }

}

void Game::update()
{ }

void Game::render()
{

    playerSprite.setPosition(playerY * 64, playerX * 64);
    window.clear();
    for (int i = 0; i < mapRows; i++) {
        for (int j = 0; j < mapCols; j++) {
            window.draw(mapSprites[i][j]);
        }
    }
    window.draw(playerSprite);
    window.display();

}

我查找了多个解决方案,例如重新安装可重新分发的x64和x86 for visual studio 2015,以及启用microsoft符号,但我仍然遇到此错误。这似乎是由vcruntime140.dll引起的。

我也有同样的问题。我将动态库作为附加依赖项包括:

sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib
它是有效的


但请记住,我的配置已设置为活动(调试)。

您是否尝试过调试程序以查看问题发生的位置?您不需要初始化
mapCols
mapRows
,然后在没有检查打开和读取文件是否成功的情况下,您可以根据这些数字执行很多操作。我可能会看看这个。您还可以手动管理内存,您是否考虑改用
std::vector
?@melak47我现在已经初始化了mapCols和mapRows。调试后,它在Game.cpp中的第一个for循环“mapData[i]=new int[mapCols];”中崩溃。您是否检查了
mapCols
mapRows
的值,它们有意义吗?您仍然不检查从文件读取是否成功。我所能做的就是在测试后重复,似乎文件没有被正确读取。我将mapdata.txt导入到项目中,并将资源文件文件夹重命名为资产,但仍无法正确读取。请检查“工作目录”设置,您的程序可能无法按预期运行,因此无法找到您的文件。
'Main.exe' (Win32): Loaded 'C:\Users\Alex\Documents\Visual Studio 2015\Projects\Main\Debug\Main.exe'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Users\Alex\Documents\Visual Studio 2015\Projects\Main\Debug\sfml-graphics-2.dll'. Module was built without symbols.
'Main.exe' (Win32): Loaded 'C:\Users\Alex\Documents\Visual Studio 2015\Projects\Main\Debug\sfml-window-2.dll'. Module was built without symbols.
'Main.exe' (Win32): Loaded 'C:\Users\Alex\Documents\Visual Studio 2015\Projects\Main\Debug\sfml-system-2.dll'. Module was built without symbols.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp140.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-runtime-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbase.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-timezone-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-file-l2-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-localization-l1-2-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-synch-l1-2-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-processthreads-l1-1-1.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-core-file-l1-2-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-string-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-heap-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-stdio-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-convert-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-locale-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-math-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-multibyte-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-time-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-filesystem-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-environment-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-crt-utility-l1-1-0.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\opengl32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\glu32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ddraw.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dciman32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp140d.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\uxtheme.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nvoglv32.dll'. Cannot find or open the PDB file.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shell32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wtsapi32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\version.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dbghelp.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded.
'Main.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\gdi32.dll'
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wintrust.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\crypt32.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msasn1.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntmarta.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Wldap32.dll'. Symbols loaded.
The thread 0x4c0 has exited with code 0 (0x0).
The thread 0x1be8 has exited with code 0 (0x0).
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\powrprof.dll'. Symbols loaded.
'Main.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\powrprof.dll'
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winsta.dll'. Symbols loaded.
The thread 0x1924 has exited with code 0 (0x0).
The thread 0x1b50 has exited with code 0 (0x0).
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dinput.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\hid.dll'. Symbols loaded.
'Main.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Symbols loaded.
'Main.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\ole32.dll'
Exception thrown at 0x6FDFDBF0 (vcruntime140.dll) in Main.exe: 0xC0000005: Access violation reading location 0x00477000.

The program '[6440] Main.exe' has exited with code 0 (0x0).
vcruntime140.dll!memcpy(unsigned char * dst, unsigned char * src, unsigned long count) Line 634 Unknown
vcruntime140.dll!__vcrt_FlsGetValue(unsigned long) Line 401 C++
sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib