[Haskell-cafe] SDL program under MinGW

Ryan Ingram ryani.spam at gmail.com
Sat Dec 6 17:19:12 EST 2008

>From the link you provided

> Q:	I get "Undefined reference to 'SDL_main'" ...
> A:	Make sure that you are declaring main() as:
> #include "SDL.h"
> int main(int argc, char *argv[])

In particular notice that they want you to include SDL.h.  I suspect
they are doing something scary like

> #define main(ac, av) SDL_Main(ac, av, maybe some other args)

The problem is that the library itself is defining WinMain, so you've
got a fight between the Haskell compiler (which wants to define the
entry point for your program to start up the runtime), and the SDL
library (which is trying to be "helpful" and failing).

I think the binding needs to not include SDLMain and instead do the
initialization itself; see the rest of that FAQ question.

In fact, the "MACOSX" readme file in the Haskell SDL binding talks
about exactly this problem.

  -- ryan

On Sat, Dec 6, 2008 at 2:05 PM, sam lee <skynare at gmail.com> wrote:
> Hi.
> I am using Windows Vista.
> I installed the following:
> - ghc 6.8.3 (using official Windows binary installer)
> - MinGW (from http://nuwen.net/mingw.html)
> - SDL binding (from
> http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL)
> I am trying to compile the following program:
>    module Main where
>    import qualified Graphics.UI.SDL as SDL
>    main = do
>        SDL.init [SDL.InitEverything]
>        SDL.quit
> I get the following error:
> C:\Users\client\code\sandbox>ghc --make Example.hs
> Linking Example.exe ...
> C:\MinGW\lib/libSDLmain.a(SDL_win32_main.o)(.text+0x409):SDL_win32_main.c:
> undefined reference to `SDL_main'
> According to SDL faq
> (http://www.libsdl.org/faq.php?action=listentries&category=4#48)  I
> should use "int main(int argc, char *argv[])", not "int main()" nor
> "WinMain()".
> Can anyone compile the above snippet on windows machine?
> I am using SDL library that is shipped with MinGW distribution that I'm using.
> I also recompiled SDL haskell binding with official SDL windows binary
> (http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz). But I
> get the same undefined reference to SDL_main linker error.
> Do I need to have specific main IO action so that SDL would work in Haskell?
> Thank you.
> Sam.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list