안녕하세요, 경연을위한 게임을 개발하는 데 몇 주간의 시간이 걸렸습니다. (나는 코딩에 익숙하지만 조금은 그렇지 않다).C++ 게임 exe가 작동을 멈췄습니다. 많은 수업이있었습니다. 비주얼 C++로 작업하기
저는 Visual C++로 게임을 작성하고 있습니다. Visual C++에서 릴리스 모드로 실행하면 문제없이 실행되지만 .exe에서 시도하면 "* * .exe가 작동을 멈췄습니다"라는 메시지가 나타납니다. 나는 그 오류를 알고 있지만 그것을 고치는 법을 모른다. 벡터가 많아서 오류가 팝업됩니다. 게임에서 실행되는 프로그램에서 크기를 조정하는 일부 벡터를 삭제하면 anyting, wall, box 벡터가 될 수 있습니다. 중요하지 않습니다. 그러나 나는 그것이 정말로 이상하다고 생각한다. 왜냐하면 내가 작업 관리자를 들여다 볼 때 게임은 2 만개의 메모리 만 차지하기 때문이다.
결론적으로 게임에서 일부 벡터를 삭제하면 게임 exe가 실행되고 그렇지 않은 경우 Visual C++에서만 실행됩니다. 어떻게해야합니까? 나는 정말로 길을 잃었다.
///////////////////////////////////////////////////////////////////////////// ///////////////////////
네 벡터 목록의 크기를 조정하면 .exe가 실행되지만 4 이상 크기를 조정하면 exe에서 오류가 발생하지만 Visual C++ 인스턴스는 계속 실행됩니다.
class Level
{
public:
int LevelWidth;
MapElements::Background Background;
//OBJETS SUR MAP
Array<MapElements::Ground> Grounds;
Array<MapElements::Wall> Walls;
Array<MapElements::Platform> Platforms;
Array<MapElements::Box> Boxs;
//ENNEMIS et JOUEUR
Array<Gameplay::Droite> Droites;
Array<Gameplay::Cercle> Cercles;
Gameplay::Player Player;
};
이 작동합니다
void Level::InitializeMap(int MaxGround, int MaxWall, int MaxPlatforms, int MaxBox)
{
Grounds.Element.resize(MaxGround);
Walls.Element.resize(MaxWall);
Platforms.Element.resize(MaxPlatforms);
Boxs.Element.resize(MaxBox);
}
이되지 않습니다
void Level::InitializeMap(int MaxGround, int MaxWall, int MaxPlatforms, int MaxBox, int MaxCercles)
{
Grounds.Element.resize(MaxGround);
Walls.Element.resize(MaxWall);
Platforms.Element.resize(MaxPlatforms);
Boxs.Element.resize(MaxBox);
Cercles.Element.resize(MaxCercles);
}
Array 클래스 : 만 4 벡터가있는 경우
template <typename T> class Array
{
public:
std::vector<T> Element;
Array();
};
template <typename T> Array<T>::Array()
{
}
크기 변경이 작동합니다. resize()이며, 변수 (벽, 상자 등), w 모자가 오류의 원인입니까?
exe 파일을 어떻게 컴파일합니까? 16 비트 모드? 제한된 방법으로 건물을 짓지 않는 한 수업의 수에는 제한이 없습니다. – stark
내 생각 엔 런타임에 필요한 파일이있을 것입니다.이 파일은 Visual Studio에서 실행할 때 런타임에 사용할 수 있지만 exe를 실행할 때는 사용할 수 없습니다. 실행 파일과 동일한 디렉토리에 게임에 필요한 모든 리소스가 있습니까? – ctor
와우 왜 아래로 투표합니까? 아니 누락 된 파일이 없습니다, 나는 클래스에 대한 제한이 없다는 것을 알고 있지만 컴파일을 살펴볼 것입니다. – user1236892