PDA

View Full Version : fatal error LNK1120: 27 unresolved externals



xenomorph69
11-18-2002, 03:08 AM
I got me a little Problem I am Using VC6.0 and doing an excercise in a OpenGL book on mipmapping and I have double checked the code, it is correct. I will paste the code into the Window so you can take a peek at it, Yes I do have glut.h installed on the machine I am working on.


#include <GL\glut.h>
#include <stdlib.h>
#include <stdio.h>

GLubyte mipmapImage32[32][32][4];
GLubyte mipmapImage16[16][16][4];
GLubyte mipmapImage8[8][8][4];
GLubyte mipmapImage4[4][4][4];
GLubyte mipmapImage2[2][2][4];
GLubyte mipmapImage1[1][1][4];

static GLuint texName;

void makeImages(void)
{
int i,j;

for (i = 0; i < 32; i++) {
for (j = 0; j < 32; j++) {
mipmapImage32[i] [j] [0] = 255;
mipmapImage32[i] [j] [1] = 255;
mipmapImage32[i] [j] [2] = 0;
mipmapImage32[i] [j] [3] = 255;
}
}
for (i = 0; i < 16; i++) {
for (j = 0; j < 32; j++) {
mipmapImage16[i] [j] [0] = 255;
mipmapImage16[i] [j] [1] = 0;
mipmapImage16[i] [j] [2] = 255;
mipmapImage16[i] [j] [3] = 255;
}
}
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
mipmapImage8[i] [j] [0] = 255;
mipmapImage8[i] [j] [1] = 0;
mipmapImage8[i] [j] [2] = 0;
mipmapImage8[i] [j] [3] = 255;
}
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
mipmapImage4[i] [j] [0] = 0;
mipmapImage4[i] [j] [1] = 255;
mipmapImage4[i] [j] [2] = 0;
mipmapImage4[i] [j] [3] = 255;
}
}
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
mipmapImage2[i] [j] [0] = 0;
mipmapImage2[i] [j] [1] = 0;
mipmapImage2[i] [j] [2] = 255;
mipmapImage2[i] [j] [3] = 255;
}
}
mipmapImage1[i] [j] [0] = 255;
mipmapImage1[i] [j] [1] = 255;
mipmapImage1[i] [j] [2] = 255;
mipmapImage1[i] [j] [3] = 255;
}

void init(void)
{
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);

// glTranslatef(0.0, 0.0, -3.6);
makeImages();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage32);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 1, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage16);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 2, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage8);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 3, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage4);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 4, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage2);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 5, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage1);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnable(GL_TEXTURE_2D);
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, texName);
glBegin(GL_QUADS);

glTexCoord2f(0.0, 0.0);
glVertex3f(-2.0, -1.0, 0.0);

glTexCoord2f(0.0, 8.0);
glVertex3f(-2.0, 1.0, 0.0);

glTexCoord2f(8.0, 8.0);
glVertex3f(2000.0, 1.0, -6000.0);
glTexCoord2f(8.0, 0.0);
glVertex3f(2000.0, -1.0, -6000.0);
glEnd();
glFlush();
}

void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 1.0, 30000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit (0);
break;
default:
break;
}
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (500, 500);
glutInitWindowPosition(50, 50);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
it seems all my GL entries are not being recognised here are the error messages
--------------------Configuration: mipmapping - Win32 Debug--------------------
Compiling...
mipmap.cpp
Linking...
mipmap.obj : error LNK2001: unresolved external symbol __imp__glTexEnvf@12
mipmap.obj : error LNK2001: unresolved external symbol __imp__glTexImage2D@36
mipmap.obj : error LNK2001: unresolved external symbol __imp__glTexParameteri@12
mipmap.obj : error LNK2001: unresolved external symbol __imp__glBindTexture@8
mipmap.obj : error LNK2001: unresolved external symbol __imp__glGenTextures@8
mipmap.obj : error LNK2001: unresolved external symbol __imp__glPixelStorei@8
mipmap.obj : error LNK2001: unresolved external symbol __imp__glShadeModel@4
mipmap.obj : error LNK2001: unresolved external symbol __imp__glEnable@4
mipmap.obj : error LNK2001: unresolved external symbol __imp__glFlush@0
mipmap.obj : error LNK2001: unresolved external symbol __imp__glEnd@0
mipmap.obj : error LNK2001: unresolved external symbol __imp__glVertex3f@12
mipmap.obj : error LNK2001: unresolved external symbol __imp__glTexCoord2f@8
mipmap.obj : error LNK2001: unresolved external symbol __imp__glBegin@4
mipmap.obj : error LNK2001: unresolved external symbol __imp__glClear@4
mipmap.obj : error LNK2001: unresolved external symbol _gluPerspective@32
mipmap.obj : error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
mipmap.obj : error LNK2001: unresolved external symbol __imp__glMatrixMode@4
mipmap.obj : error LNK2001: unresolved external symbol __imp__glViewport@16
mipmap.obj : error LNK2001: unresolved external symbol _glutMainLoop@0
mipmap.obj : error LNK2001: unresolved external symbol _glutKeyboardFunc@4
mipmap.obj : error LNK2001: unresolved external symbol _glutReshapeFunc@4
mipmap.obj : error LNK2001: unresolved external symbol _glutDisplayFunc@4
mipmap.obj : error LNK2001: unresolved external symbol _glutCreateWindow@4
mipmap.obj : error LNK2001: unresolved external symbol _glutInitWindowPosition@8
mipmap.obj : error LNK2001: unresolved external symbol _glutInitWindowSize@8
mipmap.obj : error LNK2001: unresolved external symbol _glutInitDisplayMode@4
mipmap.obj : error LNK2001: unresolved external symbol _glutInit@8
Debug/mipmapping.exe : fatal error LNK1120: 27 unresolved externals
Error executing link.exe.

mipmapping.exe - 28 error(s), 0 warning(s)

Any Suggestions any body???

chowe6685
11-18-2002, 03:24 AM
you need to link with the opengl libraries

xenomorph69
11-18-2002, 06:38 AM
the Libraries are linked and installed in the Correct Directories, I found a Glitch in my code in the makeImages() Function under the glexImage2D(GL_TEXTURE_2D, 0) they should increment by 1 and in that part of the code I have the OParamters and the numbers reversed...

sideleft
11-18-2002, 07:25 PM
Look up "Project seting".
set "Not using MFC Library" .
The rule of calling in OpenGL library is "C standard",it is different to MFC library.

xenomorph69
11-19-2002, 05:01 AM
Ok I checked the project settings and all is ok there was a glitchin the code and still the same thing I have a screenie shot of what I have if that will help, the project settings is on not using MFC at all and all of my glut.h, glut.lib, glut32.dll are in the correct diretorories, I dont understand why it wont compile

Deiussum
11-19-2002, 05:31 AM
If those are the errors you are getting, then I'd have to agree with chowe. You aren't linking the libraries in. You wouldn't get those errors because of logic errors.

Go to the link tab of project settings, and in the box for libraries, make sure that opengl32.lib, glu32.lib, and glut32.lib are all included. Usually glut.h has lines that look like so:

#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glul32.lib")
#pragma comment (lib, "glut32.lib")

Maybe you have a different version missing these lines. You could try adding them somewhere at the top of one of your own source files as an alternative to changing the project settings.

xenomorph69
11-19-2002, 05:50 AM
good reply ok now we are getting somewhere here is the error list now
--------------------Configuration: mipmapping - Win32 Debug--------------------
Linking...
mipmap.obj : error LNK2001: unresolved external symbol _gluPerspective@32
Debug/mipmapping.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

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

xenomorph69
11-19-2002, 05:53 AM
maybe I sould go back to linux Life was so much easier back then http://www.opengl.org/discussion_boards/ubb/smile.gif

What3v3r
11-19-2002, 06:23 AM
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")

#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>

Bye

xenomorph69
11-19-2002, 06:44 AM
LikeI said I am lost here

here is the Error Messages now However we are getting somewhere I cannot figure it out

Compiling...
mipmap.cpp
Linking...
mipmap.obj : error LNK2001: unresolved external symbol _gluPerspective@32
Debug/mipmapping.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

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

jebus
11-19-2002, 06:52 AM
you are still missing the glu32.lib. whatever you did to fix the big list of gl* function errors, do the same thing for the glu library. (i.e. Project->Settings->Link or #pragma())

jebus

xenomorph69
11-19-2002, 07:16 AM
almost there

Compiling...
mipmap.cpp
Linking...
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /incremental:yes "/pdb http://www.opengl.org/discussion_boards/ubb/biggrin.gifebug/mipmapping.pdb" /machine:IX86 "/out http://www.opengl.org/discussion_boards/ubb/biggrin.gifebug/mipmapping.exe" /pdbtype:sept
.\Debug\mipmap.obj

mipmapping.exe - 0 error(s), 0 warning(s)

Deiussum
11-19-2002, 08:05 AM
Well... in Linux you would have gotten very similar errors if you didn't include -lGL -lGLU and -lglut on the command line. http://www.opengl.org/discussion_boards/ubb/smile.gif

marcus256
11-19-2002, 12:42 PM
Originally posted by Deiussum:
Well... in Linux you would have gotten very similar errors if you didn't include -lGL -lGLU and -lglut on the command line. http://www.opengl.org/discussion_boards/ubb/smile.gif

...but unlike the bloated Win-style IDEs you direcly see what you're doing (you don't have to go through five levels of menus and tabs to find the setting you're looking for). Which, incidently, is the reason why I use MinGW32 (http://www.mingw.org/) for Windows http://www.opengl.org/discussion_boards/ubb/wink.gif

gcc myprog.c -o myprog.exe -lglut32 -lglu32 -lopengl32



[This message has been edited by marcus256 (edited 11-19-2002).]

Deiussum
11-20-2002, 05:41 AM
Although, in this case, the original poster didn't seem to understand what the errors were telling him. There's a lot of parameters you can pass to gcc. It could take awhile to figure out -lGL -lGLU -lglut just from trial and error. Especially when you consider that they are case sensitive.

Like anything, an experienced programmer can usually spot linker errors like this, and is probably familiar enough with the tools he/she uses to know where to add additional libraries.

Stack Overflow
11-21-2002, 06:23 PM
Linux programming is slightly different than Windows programming.

Deiussum
11-22-2002, 07:23 AM
It's not that much different. You've still got the same steps.

1. Compile to object code.
2. Link object code into binary.

The only real differences are in the APIs, the IDEs (or lack of IDE), and debugging.

IgnoranceIsBliss
11-24-2002, 01:59 PM
You can also just add the libraries as files in the MSVC File View. It's a little messier, but it IS much simpler to do if you are in a hurry or just don't particularly care.

That, and if you aren't entirely sure which LIB file you are supposed to be looking, it's easier than going back into the project settings menu every few seconds to try out a different one...