C++ .exe is not a valid win 32 app..



  • hab heute ein kleines programm programmiert.
    Als ich es etws später neu startete kommte immer eine fehlermeldung das"....exe kann nicht gestarte werden.
    Compiler zeigt mir keinen fehler an.
    Wenn ich die Exe manuell öffne kommt "keine win 32 app".
    Bin ratlos!!! 😞



  • Compiler? Betriebssystem? Quellcode?



  • Compiler Visual Studio 2010 (habs mit dev c++ auch schon probiert)
    Betriebsystem: Windows 7
    Quellcode ist etwas länger 🙂

    #include <allegro.h>
    #include<math.h>

    BITMAP* buffer;
    BITMAP * Tower_1;
    BITMAP * Tower_2;
    BITMAP * Map;

    int screen_w=1000;
    int screen_h=800;

    void buffern()
    {

    masked_blit(Tower_1,buffer,0,0,5,5,20,20);
    masked_blit(Tower_2,buffer,0,0,5,30,20,20);

    putpixel(buffer,mouse_x,mouse_y,makecol(20,200,0));
    line(buffer,mouse_x+3,mouse_y,mouse_x+13,mouse_y,makecol(20,200,0));
    line(buffer,mouse_x-3,mouse_y,mouse_x-13,mouse_y,makecol(20,200,0));
    line(buffer,mouse_x,mouse_y+3,mouse_x,mouse_y+13,makecol(20,200,0));
    line(buffer,mouse_x,mouse_y-3,mouse_x,mouse_y-13,makecol(20,200,0));

    blit(buffer,screen,0,0,0,0,screen_w,screen_h);
    release_screen();
    clear_bitmap(buffer);
    }

    void winkel(int x,int y, int xx,int yy,int r,int &ak,int &gk)
    {
    int disx=xx-x;
    int disy=y-yy;
    double z;
    int alpha;
    double alph;

    z=disy/(disx+0.001);
    alph=atan(-z);
    alpha=alph*180/3.14;
    ak=cos(alph)r;
    gk=sin(alph)r;
    if(disx<0)
    {
    ak=ak
    -1;
    gk=gk
    -1;
    }

    }

    bool collision(int player_x, int player_y,int player_w,int player_h, int objekt_x, int objekt_y, int objekt_w,int objekt_h)
    {
    int x=player_x;
    int x1=player_x+player_w;
    int y=player_y;
    int y1=player_y+player_h;
    int xx=objekt_x;
    int xx1=objekt_x+objekt_w;
    int yy=objekt_y;
    int yy1=objekt_y+objekt_h;

    if((x1<xx)||(xx1<x)||(y1<yy)||(yy1<y)) return false;
    else return true;
    }

    bool button(int x,int y,int w, int h)
    {
    if((mouse_x>x)&&(mouse_x<x+w)&&(mouse_y>y)&&(mouse_y<y+h)&&(mouse_b&1))return true;
    else return false;
    }

    class Objekte
    {
    public:

    int x;
    int y;
    int w;
    int h;
    int ak;
    int gk;
    int r;
    double a;
    bool schuss;
    bool visible;
    int anz;

    struct waffe
    {
    bool visible;
    int x;
    int y;
    int ak;
    int gk;
    };

    waffe kugel[10000];

    };

    Objekte Tower1[20];
    Objekte Tower2[20];
    Objekte Gegner[10000];

    int zahl=1;

    int main()
    {

    allegro_init();
    install_timer();
    install_mouse();
    install_keyboard();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT,screen_w,screen_h,0,0);

    buffer=create_bitmap(screen_w,screen_h);
    Tower_1=load_bitmap("Tower_1.bmp",NULL);
    Tower_2=load_bitmap("Tower_2.bmp",NULL);
    Map=load_bitmap("Map.bmp",NULL);

    int k=1;
    int g=1;
    int h=1;
    int t=1;
    int e=1;

    Gegner[2].x=310;
    Gegner[2].y=10;

    while( !key[KEY_ESC]){

    rest(40);

    rectfill(buffer,300,0,350,400,makecol(0,0,255));
    rectfill(buffer,350,350,700,400,makecol(0,0,255));
    rectfill(buffer,700,350,750,800,makecol(0,0,255));

    t++;

    if(t>10)
    {
    Gegner[h].visible=true;
    Gegner[h].x=310;
    Gegner[h].y=10;
    h=h+1;
    t=0;
    Gegner[h].visible=true;
    Gegner[h].x=335;
    Gegner[h].y=10;
    h=h+1;

    }

    for(int i=0;i<h;i++)
    {

    if(Gegner[i].visible)
    {

    if(Gegner[i].y<380) Gegner[i].y=Gegner[i].y+2;
    if(Gegner[i].y==380)Gegner[i].x=Gegner[i].x+2;
    if(Gegner[i].x==735) Gegner[i].y=Gegner[i].y+2;
    circle(buffer,Gegner[i].x,Gegner[i].y,5,makecol(255,255,255));

    }
    }

    for(int z=0;z<h;z++)
    {
    for(int i=1;i<k;i++)
    {

    for(int u=1;u<Tower1[i].anz;u++)
    {
    if(collision(Tower1[i].kugel[u].x,Tower1[i].kugel[u].y,10,10,Gegner[z].x,Gegner[z].y,10,10))
    {
    Gegner[z].visible=false;
    Tower1[i].kugel[u].visible=false;
    }

    }

    }

    }

    if(button(5,5,20,20))
    {
    while(mouse_b&1){buffern();}
    while((!mouse_b&1)&&(!key[KEY_ESC]))
    {

    for(int i=1;i<k;i++)
    {
    while(collision(mouse_x,mouse_y,20,20,Tower1[i].x,Tower1[i].y,20,20))
    {
    }
    }

    for(int i=1;i<g;i++)
    {
    while(collision(mouse_x,mouse_y,20,20,Tower2[i].x,Tower2[i].y,20,20))
    {
    }
    }

    while((collision(mouse_x,mouse_y,20,20,300,0,50,400))||(collision(mouse_x,mouse_y,20,20,350,350,350,50))||(collision(mouse_x,mouse_y,20,20,700,350,50,450)))
    {
    }

    masked_blit(Tower_1,buffer,0,0,mouse_x,mouse_y,20,20);

    for(int i=1;i<k;i++)
    {
    masked_blit(Tower_1,buffer,0,0,Tower1[i].x,Tower1[i].y,20,20);
    }

    for(int i=1;i<g;i++)
    {
    masked_blit(Tower_2,buffer,0,0,Tower2[i].x,Tower2[i].y,20,20);
    }

    rectfill(buffer,300,0,350,400,makecol(0,0,255));
    rectfill(buffer,350,350,700,400,makecol(0,0,255));
    rectfill(buffer,700,350,750,800,makecol(0,0,255));

    buffern();

    }

    if(!key[KEY_ESC])
    {
    Tower1[k].x=mouse_x;
    Tower1[k].y=mouse_y;
    Tower1[k].kugel[1].x=mouse_x+10;
    Tower1[k].kugel[1].y=mouse_y+10;
    Tower1[k].kugel[1].visible=true;
    Tower1[k].a=90;
    Tower1[k].r=20;
    k=k+1;
    }
    key[KEY_ESC]=false;
    }

    if(button(5,30,20,20))
    {

    while(mouse_b&1){buffern();}

    while((!mouse_b&1)&&(!key[KEY_ESC]))
    {

    for(int i=1;i<k;i++)
    {
    while(collision(mouse_x,mouse_y,20,20,Tower1[i].x,Tower1[i].y,20,20))
    {
    }
    }

    for(int i=1;i<g;i++)
    {
    while(collision(mouse_x,mouse_y,20,20,Tower2[i].x,Tower2[i].y,20,20))
    {
    }
    }
    while((collision(mouse_x,mouse_y,20,20,300,0,50,400))||(collision(mouse_x,mouse_y,20,20,350,350,350,50))||(collision(mouse_x,mouse_y,20,20,700,350,50,450)))
    {
    }

    masked_blit(Tower_2,buffer,0,0,mouse_x,mouse_y,20,20);

    for(int i=1;i<k;i++)
    {
    masked_blit(Tower_1,buffer,0,0,Tower1[i].x,Tower1[i].y,20,20);
    }

    for(int i=1;i<g;i++)
    {
    masked_blit(Tower_2,buffer,0,0,Tower2[i].x,Tower2[i].y,20,20);
    }

    rectfill(buffer,300,0,350,400,makecol(0,0,255));
    rectfill(buffer,350,350,700,400,makecol(0,0,255));
    rectfill(buffer,700,350,750,800,makecol(0,0,255));

    buffern();

    }

    if(!key[KEY_ESC])
    {
    Tower2[g].x=mouse_x;
    Tower2[g].y=mouse_y;
    Tower2[g].kugel[1].x=mouse_x+10;
    Tower2[g].kugel[1].y=mouse_y+10;
    Tower2[g].kugel[1].visible=true;
    Tower2[g].a=90;
    Tower2[g].r=20;
    g=g+1;
    }
    key[KEY_ESC]=false;
    }

    for(int i=1;i<k;i++)
    {
    masked_blit(Tower_1,buffer,0,0,Tower1[i].x,Tower1[i].y,20,20);
    }
    for(int i=1;i<g;i++)
    {
    masked_blit(Tower_2,buffer,0,0,Tower2[i].x,Tower2[i].y,20,20);
    }

    for(int i=1;i<k;i++)
    {

    if(Gegner[e-1].visible==false)e++;
    winkel(Tower1[i].x+10,Tower1[i].y+10,Gegner[1].x,Gegner[1].y,20,Tower1[i].kugel[Tower1[i].anz].ak,Tower1[i].kugel[Tower1[i].anz].gk);

    }

    for(int i=1;i<k;i++)
    {

    Tower1[i].anz++;
    for(int u=1;u<Tower1[i].anz;u++)
    {
    Tower1[i].kugel[Tower1[i].anz].x=Tower1[i].x+10;
    Tower1[i].kugel[Tower1[i].anz].y=Tower1[i].y+10;
    Tower1[i].schuss=true;
    }
    }

    for(int i=1;i<k;i++)
    {

    winkel(Tower1[i].x+10,Tower1[i].y+10,Gegner[1].x,Gegner[1].y,20,Tower1[i].ak,Tower1[i].gk);

    for(int u=1;u<Tower1[i].anz;u++)
    {

    Tower1[i].kugel[u].x= Tower1[i].kugel[u].x+Tower1[i].kugel[u].ak;
    Tower1[i].kugel[u].y=Tower1[i].kugel[u].y+Tower1[i].kugel[u].gk;
    if(Tower1[i].kugel[u].visible==true) circlefill(buffer,Tower1[i].kugel[u].x,Tower1[i].kugel[u].y,5,makecol(0,255,0));

    }

    int xx=Tower1[i].x+10+Tower1[i].ak;
    int yy=Tower1[i].y+10+Tower1[i].gk;

    line(buffer,Tower1[i].x+10,Tower1[i].y+10,xx,yy,makecol(0,200,0));
    line(buffer,Tower1[i].x+10,Tower1[i].y+10,xx,yy,makecol(0,200,0));

    }

    if(key[KEY_ENTER])
    {

    for(int i=1;i<g;i++)
    {
    winkel(Tower2[i].x+10,Tower2[i].y+10,mouse_x,mouse_y,20,Tower2[i].kugel[Tower2[i].anz].ak,Tower2[i].kugel[Tower2[i].anz].gk);
    Tower2[i].anz++;
    for(int u=1;u<Tower2[i].anz;u++)
    {
    Tower2[i].kugel[Tower2[i].anz].x=Tower2[i].x+10;
    Tower2[i].kugel[Tower2[i].anz].y=Tower2[i].y+10;
    Tower2[i].schuss=true;
    }
    }

    }

    for(int i=1;i<g;i++)
    {
    winkel(Tower2[i].x+10,Tower2[i].y+10,mouse_x,mouse_y,20,Tower2[i].ak,Tower2[i].gk);

    for(int u=1;u<Tower2[i].anz;u++)
    {

    Tower2[i].kugel[u].x= Tower2[i].kugel[u].x+Tower2[i].kugel[u].ak;
    Tower2[i].kugel[u].y=Tower2[i].kugel[u].y+Tower2[i].kugel[u].gk;
    if(Tower2[i].kugel[u].visible==true) circlefill(buffer,Tower2[i].kugel[u].x,Tower2[i].kugel[u].y,5,makecol(255,0,0));

    }

    int xx=Tower2[i].x+10+Tower2[i].ak;
    int yy=Tower2[i].y+10+Tower2[i].gk;

    line(buffer,Tower2[i].x+10,Tower2[i].y+10,xx,yy,makecol(0,200,0));
    line(buffer,Tower2[i].x+10,Tower2[i].y+10,xx,yy,makecol(0,200,0));

    }

    buffern();

    }

    readkey();

    return 0;
    }
    END_OF_MAIN()



  • Hab Allegro nicht auf meinem Rechner.

    Wie wärs denn, wenn du ein neues Projekt erstellst und solange Zeugs rauswirfst, bis es funktioniert. Dann hast du schon fast die Fehlerquelle gefunden.

    [Edit] Ach ja, es gibt Code-Tags: [c

    pp]mein toller code[/cpp]



  • keine Ahnung was das problem war aber es hat sich erledigt.
    Hab das ganze projekt neu aufgesetzt und aufeinmal gings!
    danke für die hilfe 😃



  • Das kommt ab und zu (bei Visual Studio) vor. Wenn man mal keine Ahnung hat, wo ein Fehler herkommt, dann einfach das Projekt bereinigen und neu erstellen 🙂



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du hattest vermutlich eine x64 EXE erstellt... die lässt sich auf x86 Systemen nicht ausführen (mit genau der Fehlermeldung).



  • Jochen Kalmbach schrieb:

    Du hattest vermutlich eine x64 EXE erstellt... die lässt sich auf x86 Systemen nicht ausführen (mit genau der Fehlermeldung).

    Das Problem war das zu große Array.


Anmelden zum Antworten