Kompilator pluje o wszystko..

0

Napisałem prostą aplikację okienkową obracającą trójkąt wokół osi Oz, oto kod:

#define WIN32_LEAN_AND_MEAN

#include <Windows.h>
#include <gl\GL.h>
#include <gl\GLU.h>

float angle = 0.1f;
HDC g_HDC;

void SetupPixelFormat(HDC hDC)
{
	int nPixelFormat;

	static PIXELFORMATDESCRIPTOR pfd = 
	{
		sizeof(PIXELFORMATDESCRIPTOR),
		1,
		PFD_DRAW_TO_WINDOW |
		PFD_SUPPORT_OPENGL |
		PFD_DOUBLEBUFFER,
		PFD_TYPE_RGBA,
		32,
		0, 0, 0, 0, 0, 0,
		0,
		0,
		0,
		0,
		0, 0, 0, 0,
		16,
		0,
		0,
		PFD_MAIN_PLANE,
		0,
		0, 0
	};

	nPixelFormat = ChoosePixelFormat(hDC, &pfd);

	SetPixelFormat(hDC, nPixelFormat, &pfd);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static HGLRC hRC;
	static HDC hDC;
	int width, height;

	switch(message)
	{
	case WM_CREATE:
		hDC = GetDC(hwnd);
		g_HDC = hDC;
		SetupPixelFormat(hDC);

		hRC = wglCreateContext(hDC);

		wglMakeCurrent(hDC, hRC);

		return 0;
		break;

	case WM_CLOSE:
		wglMakeCurrent(hDC, NULL);
		wglDeleteContext(hRC);

		PostQuitMessage(0);

		return 0;
		break;

	case WM_SIZE:
		height = HIWORD(lParam);
		width = LOWORD(lParam);

		if(height == 0)
			height = 1;

		glViewport(0, 0, width, height);

		glMatrixMode(GL_PROJECTION);
			glLoadIdentity();

		gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 1.0f, 1000.0f);

		glMatrixMode(GL_MODELVIEW);
			glLoadIdentity();

		return 0;
		break;

	default:
		break;
	}

	return (DefWindowProc(hwnd, message, wParam, lParam));
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	WNDCLASSEX windowClass;
	HWND hwnd;
	MSG msg;
	bool done;

	windowClass.cbSize = sizeof(WNDCLASSEX);
	windowClass.style = CS_HREDRAW | CS_VREDRAW;
	windowClass.lpfnWndProc = WndProc;
	windowClass.cbClsExtra = 0;
	windowClass.cbWndExtra = 0;
	windowClass.hInstance = hInstance;
	windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
	windowClass.hbrBackground = NULL;
	windowClass.lpszMenuName = NULL;
	windowClass.lpszClassName = L"Moja Klasa";
	windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);

	if(!RegisterClassEx(&windowClass))
		return 0;

	hwnd = CreateWindowEx(NULL,
		L"Moja Klasa",
		L"Aplikacja OpenGL",
		WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
		100, 100,
		400, 400,
		NULL,
		NULL,
		hInstance,
		NULL);

	if(!hwnd)
		return 0;

	ShowWindow(hwnd, SW_SHOW);
	UpdateWindow(hwnd);

	done = false;

	while(!done)
	{
		PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);

		if(msg.message == WM_QUIT)
			done = true;
		else
		{
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			glLoadIdentity();

			angle += 0.1f;
			if(angle >= 360.0f)
				angle = 0.0f;

			glTranslatef(0.0f, 0.0f, -5.0f);
			glRotatef(angle, 0.0f, 0.0f, 1.0f);

			glColor3f(1.0f, 0.0f, 0.0f);
			glBegin(GL_TRIANGLES);
				glVertex3f(0.0f, 0.0f, 0.0f);
				glVertex3f(1.0f, 0.0f, 0.0f);
				glVertex3f(1.0f, 1.0f, 0.0f);
			glEnd();

			SwapBuffers(g_HDC);

			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msg.wParam;
}

A oto co pluje się kompilator

Microsoft Visual Studio 2010 napisał(a)

1>------ Build started: Project: Triangle, Configuration: Debug Win32 ------
1>Build started 2011-05-23 1456.
1>InitializeBuildStatus:
1> Touching "Debug\Triangle.unsuccessfulbuild".
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>main.obj : error LNK2019: unresolved external symbol gluPerspective@32 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND_@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__glLoadIdentity@0 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__glMatrixMode@4 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__glViewport@16 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__wglDeleteContext@4 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__wglMakeCurrent@8 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol imp__wglCreateContext@4 referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND@@IIJ@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp__glEnd@0 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glVertex3f@12 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glBegin@4 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glColor3f@12 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glRotatef@16 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glTranslatef@12 referenced in function _WinMain@16
1>main.obj : error LNK2019: unresolved external symbol __imp__glClear@4 referenced in function _WinMain@16
1>c:\users\mjay\documents\visual studio 2010\Projects\Triangle\Debug\Triangle.exe : fatal error LNK1120: 14 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 0000.56
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

W czym może być problem?

0

Nie linkujesz biblioteki od gluta. Musisz linkerowi podać, że ma zlinkować jeszcze tą bibliotekę

0

chodzi o GLAUX.h?
Nie mam tego w folderze gl, muszę to w takim ukladzie sciagnąć skądś

0

To są bodajże opengl32.lib i glu32.lib. Nie chodzi o include, ale o ustawienia linkera

0

O ok poradziłem sobie. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1