启动配置

时间:2017-10-07 12:22:40

标签: c++ build compilation sdl

似乎我的程序无法编译我收到此错误

启动配置中指定的程序文件不存在 找不到C:\ Users \ User \ workspaceforcpp \ SDLTest \ Debug \ SDLTest.exe

但奇怪的是,在我通过添加头文件和屏幕文件之前将代码更加面向对象的方式,或者换句话说,当我从main运行所有代码时,它工作得很好

我还有其他项目有很多头文件和cpp文件,他们编译得很好

所以这让我很困惑,为什么我得到这个错误,它建立得很好但没有成功,我花了最后一小时研究如何解决这个问题,并找到了类似问题的人,但所有解决方案都没有工作,我尝试重建和清理项目,我也在我发现的帖子中跟踪用户的这些步骤

右键点击您的项目 - >属性 运行/调试设置 删除任何设置为“........”的启动配置 项目 - >清洁 项目 - >建设项目

我甚至尝试删除目标文件并重建并没有成功,我还检查了调试和发布文件夹,我在其中找不到.exe,当我检查我的其他程序不使用SDL他们都有一个.exe在他们的调试或发布文件夹中

但没有用,有什么建议吗?

我会发布我的代码,尽管据我所知,我的代码没有任何问题

      #include <iostream>
#include "Screen.h"


using namespace std;
using namespace amc;

int main(int argc, char* argv[])
{
    Screen screen;
    screen.init();
    bool quit = false;
    SDL_Event event;

    while(!quit){

           while(SDL_PollEvent(&event)){

               if(event.key.keysym.scancode == SDL_SCANCODE_5){

                   cout << "5 pressed" << endl;

               }
              if(event.type == SDL_QUIT){

                  quit = true;
              }
           }
          }

    screen.close();
}


    #include <iostream>
#include "Screen.h"

using namespace std;

namespace amc{

  Screen:: Screen():
        window(NULL),renderer(NULL),texture(NULL),buffer(NULL)
  {

  }

  bool Screen:: init(){

      if(SDL_Init(SDL_INIT_VIDEO) < 0){

           return false;
         }
      window = SDL_CreateWindow("Particle eXplosion",SDL_WINDOWPOS_UNDEFINED,
               SDL_WINDOWPOS_UNDEFINED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN);
      renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_PRESENTVSYNC);
      texture = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_STATIC,SCREEN_WIDTH,SCREEN_HEIGHT);
      buffer = new Uint32[SCREEN_WIDTH * SCREEN_HEIGHT];

      for(int i = 0; i < SCREEN_WIDTH * SCREEN_HEIGHT; i++){

                 buffer[i] = 0xFFFF00FF;
         }

      SDL_UpdateTexture(texture,NULL,buffer,SCREEN_WIDTH*sizeof(Uint32));
      SDL_RenderClear(renderer);
      SDL_RenderCopy(renderer,texture,NULL,NULL);
      SDL_RenderPresent(renderer);
      return true;
  }

  bool Screen:: processEvents(){

      return false;
  }

   void Screen:: close(){


       delete [] buffer;
       SDL_DestroyRenderer(renderer);
       SDL_DestroyTexture(texture);
       SDL_Delay(9000);
       SDL_DestroyWindow(window);
       SDL_Quit();
   }

}

    #ifndef SCREEN_H_
#define SCREEN_H_
#include <SDL.h>

namespace amc{


class Screen{


private:
    SDL_Window *window;
    SDL_Renderer *renderer;
    SDL_Texture *texture;
    Uint32 *buffer;


public:
    const static int SCREEN_WIDTH;
    const static int SCREEN_HEIGHT;

public:

    Screen();
    bool init();
    bool processEvents();
    void close();


};

}

endif / * SCREEN_H_ * /

编辑**抱歉将所有代码放在一个块中我还在弄清楚如何正确格式化,无论如何第一部分是main.cpp第二部分是Screen.cpp,第三部分是Screen.h

当我按照步骤

右键点击您的项目 - &gt;属性 运行/调试设置 删除任何设置为“........”的启动配置 项目 - &gt;清洁 项目 - &gt;建设项目

来自Nenad Bulatovic的另一个线程来自这里,当我运行程序完成所有这些步骤后,我启动失败,二进制没有失败

我确实已经在这24小时了,找不到什么错误,似乎没有任何明确的解决方案

**编辑#2

该程序似乎构建和编译没有,所以我猜它与SDL有关但不确定是什么,

我尝试将SDL.dll文件放在项目文件夹中调试和发布,甚至是根项目文件夹,但没有成功

这是我构建它时得到的

14:31:28 ****增量构建配置发布项目SDL4 **** 信息:内部构建器用于构建 g ++ -o SDL4.exe Test.o Main.o -lmingw32 -lSDL2main -lSDL2 Test.o:Test.cpp :(。rdata $ .refptr._ZN4Test12SCREEN_WIDTHE [.refptr._ZN4Test12SCREEN_WIDTHE] + 0x0):未定义引用Test::SCREEN_WIDTH' Test.o:Test.cpp:(.rdata$.refptr._ZN4Test13SCREEN_HEIGHTE[.refptr._ZN4Test13SCREEN_HEIGHTE]+0x0): undefined reference to Test :: SCREEN_HEIGHT' collect2.exe:错误:ld返回1退出状态

14:31:30建成(耗时2s.361ms)

注意我将类的名称从Screen更改为Test(新项目),但结果完全相同

**编辑#3

我尝试安装一个新的eclipse副本但仍然没有运气我得到相同的消息,我也尝试将头文件添加到每个源文件,非常奇怪的是我可以得到一个SDL程序来编译和运行但是它必须在一个文件中,我很困惑,此时我已经尝试了一切

这些是我最初遵循的步骤https://www.caveofprogramming.com/c-for-complete-beginners/setting-up-sdl-windows.html

**编辑#4

我也试过这个链接http://lazyfoo.net/SDL_tutorials/lesson01/windows/eclipse/index.php但仍然无济于事

**编辑#5仍然没有找到解决方案=(

0 个答案:

没有答案