logo       

The "impossible" has happened ...: msg#00027

lang.haskell.glasgow.bugs

Subject: The "impossible" has happened ...


Hello,

I am an "occasional" user of Haskell (who knows, that may change...) but
recently installed GHC 6.2 and was trying to explore the graphics support. To test my understanding I modified a simple example from Sven Panne's HOpenGL library (file Hi.hs, attached) to make it compatible with the GHC OpenGL support. I can load this under ghci, but when I try to execute I get the following error message, which prompted this email:

-----------------------------------------------------
Prelude> :cd HOpenGL-1.05\examples\redbook_HS
Prelude> :load Hi
Skipping Main ( Hi.hs, Hi.o )
Ok, modules loaded: Main.
Prelude Main> main
Loading package OpenGL ... linking ... done.
Loading package GLUT ... linking ...
C:/ghc/ghc-6.2/HSGLUT.o: unknown symbol `_glutMainLoop'
ghc.exe: panic! (the `impossible' happened, GHC version 6.2):
can't load package `GLUT'

Please report it as a compiler bug to glasgow-haskell-bugs@xxxxxxxxxxx,
or http://sourceforge.net/projects/ghc/.

Prelude Main>
-----------------------------------------------------


If I try compiling directly using ghc, I get a load of "undefined references" -- again suggesting that the compiler isn't finding the glut library. I'm using the Windows binary package, ghc-6-2-1.msi, running under XP. I've been able to compile and run simple programs both from the ghci shell and from cygwin, so the basic installation seems fine. The install directory (c:/ghc/ghc-6.2/) clearly contains the OpenGL libraries (which does seem to be found) and the GLUT library, both the archive libHSGLUT.a and the library linkable HSGLUT.o.

I may have made a basic error, but any suggestions? Please mailto or Cc me as I am not on the list.

thanks,
David


--
Dr. David Duke Email: D.Duke@xxxxxxxxxx
Department of Computer Science Web: www.bath.ac.uk/~masdad/
University of Bath Tel: +44 1225 383 407
Bath, BA2 7AY U.K. Fax: +44 1225 383 493

{-
Hello.hs (adapted from hello.c which is (c) Silicon Graphics, Inc)
This file is part of HOpenGL - a binding of OpenGL and GLUT for Haskell.
Copyright (C) 2000 Sven Panne <Sven.Panne@xxxxxxxxxxxxxxxxxxxxxxxxxx>

This is a simple, introductory OpenGL program.
-}

import Graphics.Rendering.OpenGL.GL
import Graphics.UI.GLUT

display :: DisplayCallback
display = do
-- clear all pixels
clear [ColorBuffer]

-- draw white polygon (rectangle) with corners at
-- (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
color (Color3 1.0 1.0 1.0 :: Color3 GLfloat)
renderPrimitive Polygon $ mapM_ vertex [
Vertex3 0.25 0.25 0.0,
Vertex3 0.75 0.25 0.0,
Vertex3 0.75 0.75 0.0,
Vertex3 0.25 0.75 (0.0 :: GLfloat)]

-- don't wait!
-- start processing buffered OpenGL routines
flush

myInit :: IO ()
myInit = do
-- select clearing color
clearColor $= (Color4 0.0 0.0 0.0 0.0)

-- initialize viewing values
matrixMode $= Projection
loadIdentity
ortho 0.0 1.0 0.0 1.0 (-1.0) 1.0

{-
Declare initial window size, position, and display mode
(single buffer and RGBA). Open window with "hello"
in its title bar. Call initialization routines.
Register callback function to display graphics.
Enter main loop and process events.
-}
main :: IO ()
main = do
getArgsAndInitialize
initialDisplayMode $= [ SingleBuffered, RGBMode ]
initialWindowSize $= (Size 250 250)
initialWindowPosition $= (Position 100 100)
createWindow "hello"
myInit
displayCallback $= display
mainLoop

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@xxxxxxxxxxx
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise