Неофициальная проблема связывания OpenGL SDK — неопределенная ссылка

Я пытаюсь заставить работать неофициальные библиотеки OpenGL SDK и начал использовать библиотеку glutil для функциональности matrixStack. Я скомпилировал исходный код с использованием Visual Studio 2010 и переместил библиотеки в папку minGW, расположенную в моей папке Code :: Blocks. Я также переместил файлы заголовков в папку include.

Теперь все должно быть на месте и должно быть скомпилировано для моей ОС, поэтому следующий код должен нормально работать.

    // Get rotation matrix
//float rotValue = (glutGet(GLUT_ELAPSED_TIME)) / 10;
glm::mat3 rotMatrix = RotateAxis(0.0f, 0.0f, 1.0f, 0.0f);
// Build final matrix from rotMatrix
glm::mat4 finalMatrix(rotMatrix);
finalMatrix[3].x = camX;
finalMatrix[3].y = camY;
finalMatrix[3].z = camZ - 1.0f;
finalMatrix[3].w = 1.0f;

glutil::MatrixStack stack(finalMatrix);
glutil::PushStack push(stack);// Object 1
glBindVertexArray(vaoObject);          // Advantage of using vao's is that you only have to do all the vertex attribute enabling and buffer stuff once.
glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(stack.Top()));
glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0);
// Object 2
stack.Translate(glm::vec3(0.0f, 0.5f, 0.0f));       // THIS IS WHERE THINGS GO WRONG
finalMatrix[3].z = camZ - 2.00f;
glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(stack.Top()));
glDrawElementsBaseVertex(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0, 36/2);

При вызове stack.Translate генерируется следующая ошибка: неопределенная ссылка на ‘glutil :: MatrixStack :: Translate (glm :: detail :: tvec3 const&)» что довольно странно, поскольку без вызова translate конструкторы для MatrixStack и PushStacks работают просто отлично, что странно.

Я попытался добавить -glutil к компоновщику, но не решил мою проблему.

Заголовок включает (относится к openGL):

// Open GL and GLUT
#include <gl/glew.h>
#include <gl/glut.h>

// Open GL Libraries
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <glutil/glutil.h>

Я до сих пор не знаю, как найти правильные имена для связи с библиотеками, поскольку OpenGL SDK не показывал эту информацию на их веб-сайте, поэтому я не уверен, что -glutil верен. Я предполагаю, что проблема связана со стадией связывания.

1

Решение

Используете ли вы код C ++, скомпилированный VC ++ под MinGW? Вы знаете, что ABI этих компиляторов отличаются? Даже схема искажения имени отличается, так что это может объяснить, почему она не может быть связана. Chack, если не исправленная версия имени функции из компоновщика mingw (должна быть где-то в отчете об ошибке) совпадает с экспортированной из glutil — используя например. DLL Export Viewer — или глютил статически связан? Если он не совпадает, вам, вероятно, потребуется использовать один и тот же компилятор для библиотеки и вашего кода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]