2016-01-01 3 views
1

Я пытаюсь создать приложение OpenGL в C++. Я использую библиотеки glew и glfw. Теперь я хотел бы создать некоторые текстуры, но теперь он говорит:Проблемы с соединением OpenGL

1>model.obj : error LNK2019: unresolved external symbol __imp_glBindTexture referenced in function "public: void __cdecl Texture::Bind(unsigned int)" ([email protected]@@[email protected]) 
1>model.obj : error LNK2019: unresolved external symbol __imp_glGenTextures referenced in function "public: bool __cdecl Texture::Load(void)" ([email protected]@@QEAA_NXZ) 
1>model.obj : error LNK2019: unresolved external symbol __imp_glTexImage2D referenced in function "public: bool __cdecl Texture::Load(void)" ([email protected]@@QEAA_NXZ) 
1>model.obj : error LNK2019: unresolved external symbol __imp_glTexParameterf referenced in function "public: bool __cdecl Texture::Load(void)" ([email protected]@@QEAA_NXZ) 
1>C:\Users\Dynamitos5\Documents\cuda\OpenGLTest\external\lib\magickdb.lib : warning LNK4272: library machine type 'X86' conflicts with target machine type 'x64' 
1>C:\Users\Dynamitos5\Documents\cuda\OpenGLTest\external\lib\magickrl.lib : warning LNK4272: library machine type 'X86' conflicts with target machine type 'x64' 
1>C:\Users\Dynamitos5\Documents\cuda\OpenGLTest\x64\Debug\OpenGLTest3.exe : fatal error LNK1120: 16 unresolved externals 

Все работало до сих пор (glGenVertexArrays(), glDrawArrays() и т.д.), только функции текстуры (glGenTextures(), glBindTexture(), и т. д.) не работают. Линкер устанавливается следующим образом: glew32.lib;glfw3.lib;assimp.lib;devil.lib;magickdb.lib;magickrl.lib;%(AdditionalDependencies)

VC включают реж: C:\Users\Dynamitos5\Documents\cuda\OpenGLTest\external\include;$(IncludePath) VC Lib реж: C:\Users\Dynamitos5\Documents\cuda\OpenGLTest\external\lib;$(LibraryPath)

+0

Вы не нашли opengl32.lib? – BDL

+0

@BDL Я думал, что opengl32.lib был предназначен только для устаревших вещей OpenGL1.1. Непонимание с моей стороны/_ \. Я соглашусь, если вы опубликуете его как ответ – Dynamitos

ответ

3

Все функции до OpenGL 1.1 реализованы непосредственно в opengl32.lib библиотеке. Все остальные функции доступны через расширение и должны быть загружены вручную (или с помощью библиотеки, например, glew).

В вашем случае у вас отсутствует ссылка для ссылки opengl32.lib.

0

Несколько вещей здесь ... OpenGL поставляется с Windows, но только до OpenGL 1.1 с opengl32.lib. Таким образом, необходима библиотека расширений, такая как glew, для всех последующих версий OpenGL. Теперь freeglut включает opengl32.lib, но glew этого не делает, поэтому вы должны включить opengl32.lib самостоятельно, если вы используете glew. В Visual Studio щелкните правой кнопкой мыши по вашему проекту (выделен жирным шрифтом), затем добавьте openg32.lib в Properties/Linker/Input. Не нужно добавлять какие-либо дополнительные каталоги в C/C++/General или Linker/General в свойствах - opengl32.lib поставляется с Windows, Visual Studio знает, где его найти, но все же нужно сказать, чтобы он ссылался на него! И наконец, скопируйте соответствующие динамические библиотеки, такие как freeglut.dll или glew32.dll, в каталог Visual Studio Debug, где находится исполняемый файл.

+0

GLUT/freeglut не являются загрузчиками. Они управляют окнами, контекстами и событиями. – derhass

Смежные вопросы