Как решить проблемы с компоновщиком при компиляции программы на C++, требующей GLUT?
-
19-09-2019 - |
Вопрос
Я пытаюсь скомпилировать эту программу на C++, использующую библиотеки GLUT32.
Прямо сейчас я получаю следующие ошибки:
Ошибка 1 ошибка LNK2001:Неразрешенные Внешний символ _gluPerspective@32 Camera.obj soundCube Ошибка 2 LNK2001:Неразрешенные Внешний символ _gluLookAt@72 Camera.obj soundCube Ошибка 3 ошибка LNK2001:Неразрешенные Внешний символ __imp__glMaterialfv@12 GLWindow.obj soundCube Ошибка 4 LNK2001:Неразрешенные Внешний символ __imp__glClear@4 GLWindow.obj soundCube Ошибка 5 ошибка LNK2001:Неразрешенные Внешний символ __imp__glClearColor@16 GLWindow.obj soundCube Ошибка 6 LNK2001:Неразрешенные Внешний символ __imp__glMaterialf@12 GLWindow.obj soundCube Ошибка 7 ошибка LNK2001:Неразрешенные Внешний символ __imp__glEnd@0 GLWindow.obj soundCube Ошибка 8 ошибка LNK2001:Неразрешенные Внешний символ __imp__glRasterPos2f@8 GLWindow.obj soundCube Ошибка 9 LNK2001:Неразрешенные Внешний символ __imp__timeGetTime@0 GLWindow.obj soundCube Ошибка 10 LNK2001:Неразрешенные Внешний символ __imp__glDisable@4 GLWindow.obj soundCube Ошибка 11 LNK2001:Неразрешенные Внешний символ __imp__glBegin@4 GLWindow.obj soundCube Ошибка 12 ошибка LNK2001:Неразрешенные Внешний символ __imp__glColor4f@16 GLWindow.obj soundCube Ошибка 13 LNK2001:Неразрешенные Внешний символ __imp__glPopMatrix@0 GLWindow.obj soundCube Ошибка 14 LNK2001:Неразрешенные Внешний символ __imp__glPushMatrix@0 GLWindow.obj soundCube Ошибка 15 LNK2001:Неразрешенные Внешний символ __imp__glRotatef@16 GLWindow.obj soundCube Ошибка 16 LNK2001:Неразрешенные Внешний символ __imp__glBlendFunc@8
...
Ошибка 56, фатальная ошибка LNK1120:55 неразрешенных внешних внешних
У меня не так много опыта в C++, но я попытался правильно настроить GLUT, чтобы этот проект мог ссылаться на него.
Я скачал библиотеку GLUT32 для Страница Нейта Робина.
Затем я поместил следующие файлы:
- Glut.h - C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl
- Glut32.lib - C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
- Glut.dll - C:\Windows\System32
Я также выбрал Проект -> Свойства -> Компоновщик -> Дополнительные зависимости -> Добавлен «glut32.lib».
Если кто-то хочет увидеть, над каким проектом я работаю, это здесь.
Какой шаг я пропустил или делаю неправильно, чтобы устранить эти ошибки?
Решение
Неразрешенные символы взяты из библиотек GL и GLU.Вам также необходимо добавить библиотеки ссылок для них.
Другие советы
мне кажется, что вы смешиваете параметры статической и динамической ссылки.Я загружаю ваш проект, чтобы изучить его, но какой тип компиляции вы делаете?
Я не видел ссылки на файл .lib в проекте...
Я добавил ссылку на библиотеку и пути LIB/INCLUDE:
diff --git a/soundCube/soundCube.vcproj b/soundCube/soundCube.vcproj
index 62e04c1..b71eb20 100644
--- a/soundCube/soundCube.vcproj
+++ b/soundCube/soundCube.vcproj
@@ -41,6 +41,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
+ AdditionalIncludeDirectories="d:\temp\glut"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -60,7 +61,9 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="glut32.lib"
LinkIncremental="2"
+ AdditionalLibraryDirectories="d:\temp\glut\GL"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
@@ -114,6 +117,7 @@
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="d:\temp\glut"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
@@ -132,7 +136,9 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="glut32.lib"
LinkIncremental="1"
+ AdditionalLibraryDirectories="d:\temp\glut\GL"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"