似乎我的程序无法编译我收到此错误
启动配置中指定的程序文件不存在 找不到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();
};
}
编辑**抱歉将所有代码放在一个块中我还在弄清楚如何正确格式化,无论如何第一部分是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仍然没有找到解决方案=(