
I can compile http://darcs.haskell.org/~lemmih/hsSDL/hssdl/Examples/MacOSX/Test.hs But I can't find the "small Cabal file" and c_main.c . Does anyone have those files? I want to try if Test.hs links well on windows platform.
I think the binding needs to not include SDLMain and instead do the initialization itself; see the rest of that FAQ question.
I can't grep for SDLMain in the binding. How should I modify the
binding code to use WinMain + proper initialization?
Thanks.
Sam.
On Sat, Dec 6, 2008 at 5:19 PM, Ryan Ingram
From the link you provided (http://www.libsdl.org/faq.php?action=listentries&category=4#48)
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
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@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe