Really strange...

This code below is correct and a window appears !
==================================
using GLib;
using SDL;

int WinMain(string[] argc)
{
        SDL.Surface *screen;

    if( SDL.init( InitFlag.VIDEO ) < 0 )
    {
        stdout.printf( "Impossible d'initialiser SDL:  %s\n",
SDL.get_error( ) );
        return 1;
    }


    screen = SDL.Screen.set_video_mode( 640, 480, 16,
SurfaceFlag.HWSURFACE );
        SDL.WindowManager.set_caption ("Vala SDL Demo", "");

    if( screen == null )
    {
        stdout.printf( "Impossible d'initialiser le mode video: %s\n",
SDL.get_error( ) );
        return 1;
    }

    SDL.Timer.delay( 3000 );
    SDL.quit();
    return 0;
}


int main(string[] argc )
{
                stdout.printf ("not printed\n");

                return 0;
}
=========================================

The "main" function is not called and I've got two warnings :
Compilation time :
test2.vala:5.1-5.11: warning: method `WinMain' never used
int WinMain(string[] argc)

Linking time :
Warning: resolving _WinMain@16 by linking to _WinMain

I need to have these two function "main" and "winmain"... :-?

Ehm...

Thanks


> Hi
> WinMain usually is the entry point for Win32 programs (isntead of
> main()). If you do not have such a function defined in your C-Code you
> get the
> the error message you described. At least that's the experience I have
> with that error message with pure C an WinAPI
>
> regards
> andi
>
>
>
> Am 20.03.2012 12:06, schrieb [email protected]:
>> Ehm.. I don't have any idea or any clue....
>>
>> I've tried to create C code and compile it :
>> -----------------------------------------------------
>> /* test2.c generated by valac 0.12.0, the Vala compiler
>>   * generated from test2.vala, do not modify */
>> #include<glib.h>
>> #include<glib-object.h>
>> #include<stdlib.h>
>> #include<string.h>
>> #include<SDL.h>
>> #include<stdio.h>
>>
>> gint _vala_main (gchar** argc, int argc_length1);
>>
>> gint _vala_main (gchar** argc, int argc_length1) {
>>      gint result = 0;
>>      SDL_Init ((guint32) 0);
>>      SDL_Quit ();
>>      fprintf (stdout, "Hello world!");
>>      result = 0;
>>      return result;
>> }
>>
>> int main (int argc, char ** argv) {
>>      g_type_init ();
>>      return _vala_main (argv, argc);
>> }
>> -------------------------------------------------
>>
>> And I've got the same error (which is not surprising...) :
>> gcc -o C:/vala\test2 C:/vala/test2.vala.c -mms-bitfields
>> -Ic:/vala/include/glib-2.0 -Ic:/vala/lib/glib-2.0/include  -Lc:/vala/lib
>> -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lintl -lSDL -lSDLmain -lmingw32
>> -mwindows
>> c:/vala/lib/libmingw32.a(main.o):main.c:(.text+0xbd): undefined
>> reference
>> to `WinMain@16'
>> collect2: ld returned 1 exit status
>>
>>
>>> Hello,
>>>
>>> 2012/3/20<[email protected]>:
>>>> Perhaps a basic linkage error but I dont know how to correct :D
>>> You should be looking at the SDL FAQ for Windows:
>>> http://wiki.libsdl.org/moin.cgi/FAQWindows
>>>
>>> For example this question seems to be exactly what you want (don't
>>> forget -X before each argument):
>>>
>>> I get "Undefined reference to 'WinMain@16'"
>>> Under Visual C++, you need to link with SDLmain.lib. Under the gcc
>>> build environments including Dev-C++, you need to link with the output
>>> of "sdl-config --libs", which is usually: -lmingw32 -lSDLmain -lSDL
>>> -mwindows
>>>
>> _______________________________________________
>> vala-list mailing list
>> [email protected]
>> http://mail.gnome.org/mailman/listinfo/vala-list
>
>

_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to