Can't find GLU symbols when compiling SimpleGL.d found in GtkD/demos

Enjoys Math enjoysmath at gmail.com
Sat May 18 19:00:30 PDT 2013


The code is:

/*
  * This file is part of gtkD.
  *
  * dui is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as 
published by
  * the Free Software Foundation; either version 3 of the License, 
or
  * (at your option) any later version.
  *
  * dui is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General 
Public License
  * along with dui; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110, USA
  */

module simpleGL.SimpleGL;

private import gdk.Event;
private import gtk.DrawingArea;
private import gtk.Main;
private import gtk.MainWindow;
private import gtk.Widget;
private import glgdk.GLConfig;
private import glgdk.GLContext;
private import glgdk.GLdInit;
private import glgdk.GLWindow;
private import glgtk.GLCapability;
private import gtkglc.glgdktypes;

private import gtkglc.gl;
private import gtkglc.glu;

/**
  * This is a Simple class extending the DrawingArea widget.
  * A really simple Demo illustrating OpenGL with GtkD
  * It uses the GLCapability mixin to add the GL capabilities to 
the widget.
  * This example is provided under the terms of the GPL License.
  * Note the initialization of the GLCapabilities on the 
constructor.
  *
  * @author pac at tuxfamily.org
  */
class SimpleGL : DrawingArea
{

	GLfloat width;
	GLfloat height;
	
	/** need to include the mixin to add GL capabilities to this 
widget */
	mixin GLCapability;

	/**
	 * Construct a simple DrawingArea and sets the GLCapabilities
	 */
	this()
	{
		super(300, 300);
		setGLCapability();	// set the GL capabilities for this widget
	}

	/**
	 * put any gl initializations here
	 * returns true to consume the event
	 */
	void initGL()
	{
		resizeGL(null);
	}
	
	/**
	 * This method is called every time the window must be paint or 
repaint
	 * This is where you put the OpenGL call to draw something.
	 * This method call be called directly by the application 
without an event object
	 * to force redrawing of the scene.
	 * returns true to consume the event
	 */
	bool drawGL()
	{
		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glLoadIdentity ();

		gluLookAt(0, 0, 10, 0, 0, 0, 0, 1,0); //Set the camera position

		//Just Draw a tri-colored triangle
		glBegin(GL_TRIANGLES);
		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f( 0.0f, 1.0f, 0.0f);
		glColor3f(0.0f,1.0f,0.0f);
		glVertex3f(-1.0f,-1.0f, 0.0f);
		glColor3f(0.0f,0.0f,1.0f);
		glVertex3f( 1.0f,-1.0f, 0.0f);
		glEnd();
			
		return true;
	}

	/**
	 * This method is called when the window is resized
	 * returns true to consume the event
	 */
	bool resizeGL(Event event = null)
	{
		GLfloat w;
		GLfloat h;
		
		if ( event is null || event.type != GdkEventType.CONFIGURE )
		{
			w = getWidth();
			h = getHeight();
		}
		else
		{
			w = event.configure.width;
			h = event.configure.height;
		}
		
		width = w;
		height = h;
		
		glViewport (0, 0, cast(int)w, cast(int)h); //Adjust the 
viewport according to new window dimensions

		/*
		 * Update the projection Matrix accoding to the new dimension
		 * and reset the OpenGL state to MODELVIEW
		 */
		glMatrixMode (GL_PROJECTION);
		glLoadIdentity ();
		gluPerspective(20, w/h, 0.1, 10);
		glMatrixMode (GL_MODELVIEW);

		return true;
	}
}

void main(string[] args)
{
	Main.init(args);

	GLdInit.init(args);
	
	SimpleGL simpleGL = new SimpleGL();
	MainWindow window = new MainWindow("Simplest OpenGL Example");
	window.add(simpleGL);
	window.showAll();
		
	Main.run();
}


The errors are:

Building Debug\SimpleGL.exe...
OPTLINK (R) for Win32  Release 8.00.12
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
Debug\SimpleGL.obj(SimpleGL)
  Error 42: Symbol Undefined _gluLookAt at 72
Debug\SimpleGL.obj(SimpleGL)
  Error 42: Symbol Undefined _gluPerspective at 32
Debug\SimpleGL.obj(SimpleGL)
  Error 42: Symbol Undefined _D6gtkglc3glu12__ModuleInfoZ
Debug\SimpleGL.obj(SimpleGL)
  Error 42: Symbol Undefined _D6gtkglc2gl12__ModuleInfoZ

I'm linking with GlU32.Lib and OpenGL32.Lib found in a "windows 
sdk" folder on my system with a windows search.  I converted them 
to OMF using the coffimplib tool provided by digital mars.  So 
this worked for the OpenGL32.Lib and got rid of those errors but 
the GlU32.Lib symbol errors persist.

Thank you!


More information about the Digitalmars-d-learn mailing list