LNK2019 Проблемы FreeGLUT/OpenGL (проблемы со связыванием библиотек)

Ну, я смотрел на множество людей, у которых есть точно такая же проблема (более или менее), но я не могу понять, в чем здесь проблема. Я пытаюсь изучать OpenGL, в основном, чтобы больше узнать о рендеринге и разработке игр, и немного разбираюсь. Тем не менее, я по профессии программист.NET, и я не касался C/C++ с тех пор, как я был в классе (хотя я только закончил в этом году).

Вот код:

#define GLUT_DISABLE_ATEXIT_HACK
#include "LUtil.h"
void runMainLoop( int val );
/*
Pre Condition:
 -Initialized freeGLUT
Post Condition:
 -Calls the main loop functions and sets itself to be called back in 1000 / SCREEN_FPS milliseconds
Side Effects:
 -Sets glutTimerFunc
*/

int main( int argc, char* args[] )
{
    //Initialize FreeGLUT
    glutInit( &argc, args );
//Create OpenGL 2.1 context
glutInitContextVersion( 2, 1 );

//Create Double Buffered Window
glutInitDisplayMode( GLUT_DOUBLE );
glutInitWindowSize( SCREEN_WIDTH, SCREEN_HEIGHT );
glutCreateWindow( "OpenGL" );

//Do post window/context creation initialization
if( !initGL() )
{
    printf( "Unable to initialize graphics library!\n" );
    return 1;
}

//Set rendering function
glutDisplayFunc( render );

//Set main loop
glutTimerFunc( 1000 / SCREEN_FPS, runMainLoop, 0 );

//Start GLUT main loop
glutMainLoop();

return 0;
}

void runMainLoop( int val )
{
//Frame logic
update();
render();

//Run frame one more time
glutTimerFunc( 1000 / SCREEN_FPS, runMainLoop, val );
}

LUtil.h ссылается на LOpenGL.h, который ссылается на:

#ifndef LOPENGL_H
#define LOPENGL_H

#include <GL/freeglut.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <stdio.h>

#endif

Вот ошибки, которые я получаю:

2>LUtil.obj : error LNK2019: unresolved external symbol __imp_glutSwapBuffers referenced in function "void __cdecl render(void)" (?render@@YAXXZ)
2>main.obj : error LNK2019: unresolved external symbol __imp_glutInit referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutInitWindowSize referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutInitDisplayMode referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutMainLoop referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutCreateWindow referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutTimerFunc referenced in function "void __cdecl runMainLoop(int)" (?runMainLoop@@YAXH@Z)
2>main.obj : error LNK2019: unresolved external symbol __imp_glutDisplayFunc referenced in function main
2>main.obj : error LNK2019: unresolved external symbol __imp_glutInitContextVersion referenced in function main

Вот мои настройки компоновщика и пути. В каталоге CMake\common я храню freeglut. Я поместил свой x64 freeglut.dll в мой путь к исполняемому файлу и использую операционную систему x64.

Additional Dependencies: opengl32.lib;freeglut.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;

Include Directories: C:\CMake\common\include;$(IncludePath)

Library Directories: C:\CMake\common\lib;$(LibraryPath)

Вот учебник, который я использую (кстати, если у кого-то есть рекомендации по лучшему учебнику по OpenGL, у меня все уши, все они кажутся довольно устаревшими и любительскими): http://lazyfoo.net/tutorials/OpenGL/01_hello_opengl/index.php

Я выполнил все шаги и правильно связал свои файлы. Настоящим кикером является то, что раньше я следовал другому учебнику ( http://www.opengl-tutorial.org/); Я отказался от этого, потому что "рабочий" код, поставляемый с исходным кодом учебного пособия, отображал только белый экран вместо треугольника на черном экране, а само учебное пособие было очень трудным из-за плохих коммуникативных навыков автора. Этот, который я сейчас использую, кажется, написан лучше, но инструкции привели меня к этим ошибкам. Тем не мение. он по крайней мере побежал, и открыл окно рендеринга. Из того, что я могу сказать, мои настройки ничем не отличаются от тех, кроме того, что я использую freeglut.

Редактировать: Вы не думаете, что это немного несправедливо, модератор? Ваш пост намного шире, чем мой. Это логичный эквивалент того, что я советую идти к учебнику по C/C++ вместо публикации здесь. Логический вывод - закрыть этот сайт, потому что ресурсы доступны в другом месте.

0 ответов

Другие вопросы по тегам