Расширения OpenGL, вызывающие проблемы с компоновщиком - PullRequest
0 голосов
/ 28 июня 2010

Я пытаюсь получить адреса для аддона VBO. В моем stdafx.h у меня есть gl.h, glext.h и wglext.h

Если я сделаю: glGenBuffersARB = (PFNGLGENBUFFERSARBPROC) wglGetProcAddress ( "glGenBuffersARB"); glGenBuffersARB (0,0);

в stdafx.cpp, это скомпилирует. но если я попытаюсь использовать glGenBuffersARB (0,0); в любом из моих других файлов h или cpp я получаю:

Error   11  fatal error LNK1169: one or more multiply defined symbols found C:\Users\Josh\Documents\Visual Studio 2008\Projects\Vectorizer Project\Release\Vectorizer Project.exe
Error   10  error LNK2005: _glGenBuffersARB already defined in OGLENGINE.obj    stdafx.obj

Как правильно это сделать, чтобы я мог использовать расширение vbo в любом месте моего кода?

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 июня 2010

_glGenBuffersARB уже определено

Вы, вероятно, объявили glGenBuffersARB как глобальную переменную в файле заголовка (* .h) и забыли добавить "extern".

Как правильно это сделать, чтобы я мог использовать расширение vbo в любом месте моего кода?

Используйте GLEE или GLEW .

0 голосов
/ 28 июня 2010

У вас есть ошибка компоновки, которая выглядит так, как будто у вас есть более одного определения для glGenBuffersARB. В качестве первого шага отладки я бы изменил его так, чтобы имя указателя вашей функции не совпадало с именем функции, адрес которой вы получаете.

fp_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)wglGetProcAddress("glGenBuffersARB"); 

Возможно, функция уже определена с именем glGenBuffersARB в библиотеке, на которую вы ссылаетесь.

Вы не показываете, в каком контексте вы вызываете wglGetProcAddress или в какой области видна ваша переменная glGenBuffersARB (или fp_glGenBuffersARB после моего переименования), но вы должны убедиться, что для нее есть только одно определение. Вы можете отправить объявление в заголовочном файле, но у вас должно быть только одно определение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...