Как исправить ошибку компиляции OpenGL, «неразрешенный внешний символ» - PullRequest
1 голос
/ 15 февраля 2011

Я пытаюсь написать программу OpenGL для управления камерой.Однако код не компилируется.

Весь мой исходный код можно найти здесь .

Ошибка:

1>------ Rebuild All started: Project: Lab4, Configuration: Debug Win32 ------
1>Build started 2/14/2011 7:17:54 PM.
1>_PrepareForClean:
1>  Deleting file "Debug\Lab4.lastbuildstate".
1>InitializeBuildStatus:
1>  Touching "Debug\Lab4.unsuccessfulbuild".
1>ClCompile:
1>  camera.cpp
1>camera.obj : error LNK2019: unresolved external symbol "public: void __thiscalllVector3::normalize(void)" (?normalize@Vector3@@QAEXXZ) referenced in function "public: void __thiscall Camera::set(class Point3,class Point3,class Vector3)" (?set@Camera@@QAEXVPoint3@@0VVector3@@@Z)
1>camera.obj : error LNK2019: unresolved external symbol "public: class Vector3 __thiscall Vector3::cross(class Vector3)" (?cross@Vector3@@QAE?AV1@V1@@Z) referenced in function "public: void __thiscall Camera::set(class Point3,class Point3,class Vector3)" (?set@Camera@@QAEXVPoint3@@0VVector3@@@Z)
1>camera.obj : error LNK2019: unresolved external symbol "public: float __thiscall Vector3::dot(class Vector3)" (?dot@Vector3@@QAEMV1@@Z) referenced in function "private: void __thiscall Camera::setModelviewMatrix(void)" (?setModelviewMatrix@Camera@@AAEXXZ)
1>C:\Users\Andrew Davis\Documents\Visual Studio 2010\Projects\Lab4\Debug\Lab4.exe : fatal error LNK1120: 3 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.08
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

У меня уже есть в моем компоновщике:

opengl32.lib glu32.lib glut32.lib freeglut.lib

Какие-либо предложения?Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Вы должны предоставить тело для следующих функций, даже если оно пустое. Vector3::normalize(), Vector3::cross(), Vector3::dot(). Например

void normalize(){ //do something}

Вы вызываете их, поэтому вы получаете неразрешенную ошибку компоновщика, потому что нет реализации.

0 голосов
/ 15 февраля 2011

Это не проблема с OpenGL или его библиотеками.Похоже, что camera.cpp использует какой-то другой класс, но его реализация либо не построена, либо не связана.

РЕДАКТИРОВАТЬ: просто взглянул на ваш код

Как насчет реализации Vector3::normalize(), Vector3::cross() и Vector3::dot()?Строки 86, 107 и 108 в Pastebin.

...