无法运行SDL2项目,“无法执行”“:%1不是有效的Win32应用程序”
我试图教会自己如何在Qt Creator中使用SDL2,但不断进入这些“只让我编写代码”的情况。目前,我只是想打开一个窗口,上面有绿色的图片(做一个教程),但我得到这个错误:无法运行SDL2项目,“无法执行”“:%1不是有效的Win32应用程序”
Cannot execute "": %1 not a valid Win32-application
我使用MinGW的5.3.0 32bit2因为编译器和I”已经设法运行没有这个错误的其他项目。我试着修改构建和运行配置,但没有任何运气。目前我(必需的)运行的配置是这样的:
Executable C:\...\sdl_test\debug\sdl_test.exe
Working directory: C:\...\sdl_test
也可对照,这里的main.cpp中:
#include <iostream>
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
using namespace std;
int main()
{
bool quit = false;
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = nullptr;
window = SDL_CreateWindow("MVP", 100, 100, 600, 400,
SDL_WINDOW_SHOWN);
if(window == nullptr){
cout << "Window could not be created." << endl;
return 0;
}
SDL_Renderer* renderer = nullptr;
renderer = SDL_CreateRenderer(window, -1,
SDL_RENDERER_ACCELERATED);
SDL_Event* mainEvent = new SDL_Event();
SDL_Texture* grass_image = NULL;
grass_image = IMG_LoadTexture(renderer, "grass.bmp");
SDL_Rect grass_rect;
grass_rect.x = 10;
grass_rect.y = 50;
grass_rect.w = 250;
grass_rect.h = 250;
while(!quit && mainEvent->type != SDL_QUIT){
SDL_PollEvent(mainEvent);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, grass_image, NULL, &grass_rect);
SDL_RenderPresent(renderer);
}
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
delete mainEvent;
return 0;
}
感到绝望,因为我只是想上打开一个窗口,一个绿色的矩形它......这是太多要问?!
编辑: 这是我的.pro文件
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
win32: LIBS += -L$$PWD/../../../../SDL2-2.0.5/i686-w64-mingw32/lib/ -lmingw32 -lSDL2main -lSDL2
INCLUDEPATH += $$PWD/../../../../SDL2-2.0.5/i686-w64-mingw32/include
DEPENDPATH += $$PWD/../../../../SDL2-2.0.5/i686-w64-mingw32/include
win32: LIBS += -L$$PWD/../../../../SDL2_image-2.0.1/i686-w64-mingw32/lib/ -lmingw32 -lSDL2_image
INCLUDEPATH += $$PWD/../../../../SDL2_image-2.0.1/i686-w64-mingw32/include
DEPENDPATH += $$PWD/../../../../SDL2_image-2.0.1/i686-w64-mingw32/include
win32:QMAKE_LFLAGS += -shared
你呈现给我们的代码适用于Linux和任何理智的系统:)
有可能是你的问题的几个问题:
1 - 你想在32位系统
2运行64位应用程序 - 您的DLL的可能是腐败
3 - 您的SDL的DLL可以与Microsoft Visual Studio编译(你需要得到使用MinGW生成的dll)
也,你应该通过几个标志的编译器,因为你告诉我们,你是使用Qt Creator的,可能你有一个projectname.pro文件或的CMakeLists.txt
发现你所拥有的,并通过这些标志来编译:
轮候册,-subsystem,窗户
和链接到这些库
-lmingw32 -lSDL2main -lSDL2
感谢您的答复! 1.我正在运行一个64位系统,它不应该能够处理32位? 2.我运行sfc/scannnow,它没有发现完整性违规行为 3.我不确定是否发生这种情况,所以我将.pro文件添加到原始文章中。我还为LIBS添加了-lmingw32标志 – Borjee
如果你'C双击,会发生什么:\ ... \ sdl_test \在资源管理器的调试\ sdl_test.exe'?如果从'cmd'运行'C:\ ... \ sdl_test \ debug \ sdl_test.exe',会发生什么情况? – Paul
如果我双击sdl_test.exe:“此操作系统不支持此应用程序” 同样的事情,如果我尝试从cmd运行。我正在运行一个64位操作系统。 – Borjee
只是一个疯狂的想法 - 你确定你正在使用的编译器生成Windows的二进制文件?也许这是一个Linux交叉编译器。如果你的'MinGW'中有'file'工具,你可以运行'file sdl_test.exe'并看看它会打印什么? – Paul