[DJGPP] Allegro

Pagina: 1
Acties:

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 15-09 23:20
Ik ben dus net bezig met Allegro onder DJGPP. Ik probeerde dus een script te compilen (letterlijk van internet, Hello World) maar hij blijft hangen bij een parse error op de laatste regel :(

de laatste regels zijn:
code:
1
2
3
return 0;
}
END_OF_MAIN()

; erachter zetten heeft geen zin want dan heb ik opeens 20 errors :(

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Ik ken de taal niet, maar probeer eens zonder () te doen :?

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Is niets mis mee hoor, misschien is je main niet goed gedefinieerd? verwacht ie wel een return value?

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 15-09 23:20
Ja dat kan ik nog proberen... ff rommelen met return

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09
Op vrijdag 21 december 2001 12:35 schreef Nielsz het volgende:
Ik ken de taal niet, maar probeer eens zonder () te doen :?
Nielsz kent C++ niet? :? :P :Y)

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Misschien heb je hier wat aan:
Windows GUI applications start with a WinMain() entry point, rather than the standard main() entry point. Allegro is configured to build GUI applications by default and to do some magic in order to make a regular main() work with them, but you have to help it out a bit by writing END_OF_MAIN() right after your main() function. If you don't want to do that, you can just include winalleg.h and write a WinMain() function. Note that this magic may bring about conflicts with a few programs using direct calls to Win32 API functions; for these programs, the regular WinMain() is required and the magic must be disabled by defining the preprocessor symbol ALLEGRO_NO_MAGIC_MAIN before including Allegro headers.
source: http://alleg.sourceforge.net/onlinedocs/en/index.html

aangenomen dat je onder windhoos aan het proggen bent natuurlijk :)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 21 december 2001 12:42 schreef Taradino het volgende:

[..]

Nielsz kent C++ niet? :? :P :Y)
Jawel, maar ik moest spontaan aan pascal denken,
en daar begon je met MAIN dacht ik, zonder ().
Of heb ik het nu helemaal fout :?

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Op vrijdag 21 december 2001 13:17 schreef Nielsz het volgende:

[..]

Jawel, maar ik moest spontaan aan pascal denken,
en daar begon je met MAIN dacht ik, zonder ().
Of heb ik het nu helemaal fout :?
Begin je in pascal niet gewoon met begin?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 21 december 2001 13:26 schreef BurningSheep het volgende:

[..]

Begin je in pascal niet gewoon met begin?
:( :)

program Hello;
begin (* Main *D
writeln ('Hello, world.')
end. (* Main *D

(ff gezocht op google)

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 15-09 23:20
Werkt nog steeds niet :'(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <allegro.h>

const int scrx = 640;
const int scry = 480;

int WinMain(int argc, char* argv[]) {
  if (allegro_init()) {
    allegro_message("Cannot initalize Allegro.\n");
    return 1;
  }

  //Set the window title when in a GUI environment
  set_window_title("Hello World");

  if (install_keyboard()) {
    allegro_message("Cannot initalize keyboard input.\n");
    return 1;
  }

  //set graphics mode, trying all acceptable depths
  set_color_depth(32);
  if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
    set_color_depth(24);
    if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
    set_color_depth(16);
    if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
      set_color_depth(15);
      if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
        allegro_message("Video Error: %s.\n", allegro_error);
        return 1;
      }
    }
    }
  }

  //set text background color to bright blue
  text_mode(makecol(0, 0, 255));

  //prints yellow "Hello World!!!" in middle of screen
  textout_centre(screen, font, "Hello World!!!", scrx/2,
             scry/2, makecol(255, 255, 0));

  //Wait for a key to be pressed
  while (!keypressed()) {}

  return 0;
  //Allegro will automatically deinitalize itself on exit
}
END_OF_MAIN()

:S

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Verwijderd

Je moet in dit geval waarschijnlijk gewoon
code:
1
2
3
4
5
6
7
int main(int argc, char* argv[])
{
    // Whatever

    return 0;
}
END_OF_MAIN();

gebruiken.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
END_OF_MAIN() moet gewoon weg, of commentaar ervoor :D

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Op vrijdag 21 december 2001 16:01 schreef paus_j_p2 het volgende:
Werkt nog steeds niet :'(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <allegro.h>

const int scrx = 640;
const int scry = 480;

int WinMain(int argc, char* argv[]) {
  if (allegro_init()) {
    allegro_message("Cannot initalize Allegro.\n");
    return 1;
  }

  //Set the window title when in a GUI environment
  set_window_title("Hello World");

  if (install_keyboard()) {
    allegro_message("Cannot initalize keyboard input.\n");
    return 1;
  }

  //set graphics mode, trying all acceptable depths
  set_color_depth(32);
  if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
    set_color_depth(24);
    if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
    set_color_depth(16);
    if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
      set_color_depth(15);
      if (set_gfx_mode(GFX_AUTODETECT, scrx, scry, 0, 0)) {
        allegro_message("Video Error: %s.\n", allegro_error);
        return 1;
      }
    }
    }
  }

  //set text background color to bright blue
  text_mode(makecol(0, 0, 255));

  //prints yellow "Hello World!!!" in middle of screen
  textout_centre(screen, font, "Hello World!!!", scrx/2,
             scry/2, makecol(255, 255, 0));

  //Wait for a key to be pressed
  while (!keypressed()) {}

  return 0;
  //Allegro will automatically deinitalize itself on exit
}
END_OF_MAIN()

:S
Nee, dat werkt idd niet, je hebt of een END_OF_MAIN() en een int main(int argc, char* argv[])

OF

je hebt een int WinMain(int argc, char* argv[])

maar allebei kan gewoon niet!!!

In die END_OF_MAIN() wordt namelijk al een WinMain gemaakt zodat alle progsels die gebruik maken van allegro gewoon een main hebben (conform de ansi c standaard)
Pagina: 1