Archived

This topic is now archived and is closed to further replies.

Linker errors on Nehe Lesson 6

This topic is 5042 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have Visual C++ 6.0 on Windows XP. I have started a empty Windows project and have created Nehe.cpp to hold the C++ code for Lesson 6. Lesson 6 compiles but it does not link. I have already included the *.lib files under the Link tab as requested in Lesson 1. The error reads like this: --------------------Configuration: Nehe - Win32 Debug-------------------- Linking... LINK : fatal error LNK1104: cannot open file "and.obj" Error executing link.exe. Nehe.exe - 1 error(s), 0 warning(s) ----------------------------------------------------------------------------------------- Nehe.cpp contains this:
#include	<windows.h>							// Header File For Windows

#include	<stdio.h>							// Header File For Standard Input/Output ( NEW )

#include	<gl\gl.h>							// Header File For The OpenGL32 Library

#include	<gl\glu.h>							// Header File For The GLu32 Library

#include	<gl\glaux.h>							// Header File For The GLaux Library


HDC			hDC=NULL;							// Private GDI Device Context

HGLRC		hRC=NULL;							// Permanent Rendering Context

HWND		hWnd=NULL;							// Holds Our Window Handle

HINSTANCE	hInstance;							// Holds The Instance Of The Application


bool		keys[256];							// Array Used For The Keyboard Routine

bool		active=TRUE;							// Window Active Flag

bool		fullscreen=TRUE;						// Fullscreen Flag


GLfloat		xrot;								// X Rotation ( NEW )

GLfloat		yrot;								// Y Rotation ( NEW )

GLfloat		zrot;								// Z Rotation ( NEW )


GLuint		texture[1];							// Storage For One Texture ( NEW )


LRESULT	CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);				// Declaration For

WndProc

AUX_RGBImageRec *LoadBMP(char *Filename)					// Loads A Bitmap Image

{
	FILE *File=NULL;
	if (!Filename)								// Make Sure A Filename Was Given

	{
		return NULL;							// If Not Return NULL

	}
	File=fopen(Filename,"r");						// Check To See If The File Exists

		if (File)								// Does The File Exist?

	{
		fclose(File);							// Close The Handle

		return auxDIBImageLoad(Filename);				// Load The Bitmap And Return A Pointer

	}

	return NULL;								// If Load Failed Return NULL

}

int LoadGLTextures()								// Load Bitmaps And Convert To Textures

{

	int Status=FALSE;							// Status Indicator

	AUX_RGBImageRec *TextureImage[1];					// Create Storage Space For The Texture

	memset(TextureImage,0,sizeof(void *)*1);				// Set The Pointer To NULL

	// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit

	if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))
	{
		Status=TRUE;							// Set The Status To TRUE


		glGenTextures(1, &texture[0]);					// Create The Texture


		// Typical Texture Generation Using Data From The Bitmap

		glBindTexture(GL_TEXTURE_2D, texture[0]);

		// Generate The Texture

		glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);	// Linear

Filtering
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);	// Linear

Filtering
	}

	if (TextureImage[0])							// If Texture Exists

	{
		if (TextureImage[0]->data)					// If Texture Image Exists

		{
			free(TextureImage[0]->data);				// Free The Texture Image Memory

		}

		free(TextureImage[0]);						// Free The Image Structure

	}

	return Status;								// Return The Status

}

int InitGL(GLvoid)								// All Setup For OpenGL Goes Here

{
	if (!LoadGLTextures())							// Jump To Texture Loading Routine ( NEW )

	{
		return FALSE;							// If Texture Didn't Load Return FALSE ( NEW )

	}

	glEnable(GL_TEXTURE_2D);						// Enable Texture Mapping ( NEW )

	glShadeModel(GL_SMOOTH);						// Enable Smooth Shading

	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);					// Black Background

	glClearDepth(1.0f);							// Depth Buffer Setup

	glEnable(GL_DEPTH_TEST);						// Enables Depth Testing

	glDepthFunc(GL_LEQUAL);							// The Type Of Depth Testing To Do

	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);			// Really Nice Perspective

Calculations
	return TRUE;								// Initialization Went OK

}

int DrawGLScene(GLvoid)								// Here's Where We Do All The Drawing

{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);			// Clear Screen And Depth

Buffer
	glLoadIdentity();							// Reset The Current Matrix

	glTranslatef(0.0f,0.0f,-5.0f);						// Move Into The Screen 5 Units


	glRotatef(xrot,1.0f,0.0f,0.0f);						// Rotate On The X Axis

	glRotatef(yrot,0.0f,1.0f,0.0f);						// Rotate On The Y Axis

	glRotatef(zrot,0.0f,0.0f,1.0f);						// Rotate On The Z Axis


	glBindTexture(GL_TEXTURE_2D, texture[0]);				// Select Our Texture


	glBegin(GL_QUADS);
		// Front Face

		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	// Bottom Left Of

The Texture and Quad
		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	// Bottom Right Of

The Texture and Quad
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	// Top Right Of The

Texture and Quad
		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	// Top Left Of The

Texture and Quad
		// Back Face

		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	// Bottom Right Of

The Texture and Quad
		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	// Top Right Of The

Texture and Quad
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	// Top Left Of The

Texture and Quad
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	// Bottom Left Of

The Texture and Quad
		// Top Face

		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	// Top Left Of The

Texture and Quad
		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	// Bottom Left Of

The Texture and Quad
		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	// Bottom Right Of

The Texture and Quad
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	// Top Right Of The

Texture and Quad
		// Bottom Face

		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	// Top Right Of The

Texture and Quad
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	// Top Left Of The

Texture and Quad
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	// Bottom Left Of

The Texture and Quad
		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	// Bottom Right Of

The Texture and Quad
		// Right face

		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	// Bottom Right Of

The Texture and Quad
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	// Top Right Of The

Texture and Quad
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	// Top Left Of The

Texture and Quad
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	// Bottom Left Of

The Texture and Quad
		// Left Face

		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	// Bottom Left Of

The Texture and Quad
		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	// Bottom Right Of

The Texture and Quad
		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	// Top Right Of The

Texture and Quad
		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	// Top Left Of The

Texture and Quad
	glEnd();

	xrot+=0.3f;								// X Axis Rotation

	yrot+=0.2f;								// Y Axis Rotation

	zrot+=0.4f;								// Z Axis Rotation

	return true;								// Keep Going

}
[edited by - ajaytemp on February 22, 2004 8:19:34 PM]

Share this post


Link to post
Share on other sites
The problem was that I had ''and'' as an Object module under the Link tab under Project Settings.

But now I get this error:
--------------------Configuration: Nehe - Win32 Debug--------------------
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/Nehe.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Nehe.exe - 2 error(s), 0 warning(s)

Share this post


Link to post
Share on other sites