Я пытаюсь создать текст в окне с помощью функции. Когда у меня есть glutBitmapCharacter() в коде, я получаю эту ошибку: LNK2019 unresolved external symbol __imp__glutBitmapCharacter@8 referenced in function "void __cdecl drawText(char const *,int,int,int)" (?drawText@@YAXPBDHHH@Z)

Функция рисования текста:

 void drawText(const char* text, int length, int x, int y) {
     glMatrixMode(GL_PROJECTION);
     double* matrix = new double[16];
     glGetDoublev(GL_PROJECTION_MATRIX, matrix);
     glLoadIdentity();
     glOrtho(0, 800, 0, 600, -5, 5);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
     glPushMatrix();
     glLoadIdentity();
     glRasterPos2i(x, y);
     for (int i=0; i<length; i++) {
         glutBitmapCharacter(GLUT_BITMAP_9_BY_15, (int)text[i]);
     }
     glPopMatrix();
     glMatrixMode(GL_PROJECTION);
     glLoadMatrixd(matrix);
     glMatrixMode(GL_MODELVIEW);
 }

Основная функция:

 int main() {
    int windowWidth = 1024, windowHeight = 1024;
    if (!glfwInit())
        return -1;


GLFWwindow* window;
window = glfwCreateWindow(windowWidth, windowHeight, "electroCraft", NULL, NULL);
glfwMakeContextCurrent(window); // stes the specified window as active INACTIVE SCREEN IF WINDOW NOT CURRENT!!!!
if (!window) {
    glfwTerminate();
    printf("Screen failed to start. ABORTING...\n");
    return -1;
}
glMatrixMode(GL_PROJECTION);
glViewport(0, 0, windowWidth, windowHeight);
glOrtho(0, windowWidth, 0, windowHeight, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
string title;
title = "Hello World!";
while (!glfwWindowShouldClose(window)) {
    glClearColor(62.0f / 255.0f, 85.9f / 255.0f, 255.0 / 255.0, 0.0);
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

    //begin drawing
    drawText(title.data(), title.size(), windowWidth / 2, windowHeight / 2);

    glfwSwapBuffers(window);
    glfwPollEvents();
}
glfwTerminate();
return 0;

}

Я почти уверен, что получаю эту ошибку, возможно, из-за неправильной компоновки библиотеки, но у меня нет других проблем с любым другим кодом здесь из библиотек opengl.

0
Dextron 30 Окт 2019 в 00:33
Это единственная функция glut в приведенном выше коде, так что, может быть, в ссылке отсутствует только одна библиотека?
 – 
Richard Critten
30 Окт 2019 в 00:44
У меня есть #include , и я проверил свойства проекта, и все кажется связанным
 – 
Dextron
30 Окт 2019 в 00:49
1
Отсутствие #include <GL\freeglut.h> привело бы к ошибке компиляции, а не к ошибке компоновщика. Как связать программу?
 – 
Richard Critten
30 Окт 2019 в 00:51
Я не думаю, что это потому, что я неправильно связал библиотеку. Я думаю, что это просто мой код и что-то, что я не сделал правильно.
 – 
Dextron
30 Окт 2019 в 01:00

1 ответ

Проблема заключалась в том, что я использовал 32-битные библиотеки и 64-битные библиотеки вместе, что также вызывало другие ошибки. Я исправил это, загрузив все необходимые 64-битные библиотеки, а затем перезапустив свой проект как 64-битный проект.

1
Dextron 31 Окт 2019 в 14:17