Я использую библиотеку "glut" и пытаюсь скомпилировать код компилятором gcc, но это дает нежелательный результат. Когда я пытаюсь построить команду (Ctrl + Shift + B) для кода Visual Studio, Терминал возвращает ниже сообщения об ошибках .
> Выполнение задачи: gcc -IC: \ MinGW \ include -IC: \ Users \ Ayata \ Documents \ Work \ freeglut-3.0.0 \ include -oc: \ Users \ Ayata \ Documents \ WorkReport \ MakeGameByUsingCpp \ main c : \ Users \ Ayata \ Documents \ WorkReport \ MakeGameByUsingCpp \ main.cpp <</p>
c: / mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe: C: \ Users \ Ayata \ AppData \ Local \ Temp \ cc0Hoyy5.o: main.cpp :(. Text + 0x1c): неопределенная ссылка на _imp____glutInitWithExit@12'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\Ayata\AppData\Local\Temp\cc0Hoyy5.o:main.cpp:(.text+0x3f): undefined reference to
_imp ____ glutCreateWindowWithExit @ 8 '
~ ~ * сокращайте 1009 *
c: / mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe: C: \ Users \ Ayata \ AppData \ Local \ Temp \ cc0Hoyy5.o: main.cpp :(. Text + 0x162): неопределенная ссылка на glClear@4'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\Ayata\AppData\Local\Temp\cc0Hoyy5.o:main.cpp:(.text+0x16a): undefined reference to
_imp__glutSwapBuffers @ 0 '
collect2.exe: ошибка: ld вернул 1 состояние выхода
Терминальный процесс завершен с кодом выхода: 1
Терминал будет повторно использоваться задачами, нажмите любую клавишу, чтобы закрыть его.
Я полагаю, неправильная ссылка на каталог библиотеки вызывает эту ошибку. Но я не знаю, как это исправить. Не могли бы вы сказать мне решение этой ошибки? Я покажу мои коды ниже.
~ p.s. ~ Мне удалось скомпилировать простую программу "Hello World"! Это сработало хорошо!
↓ Мой код "main.cpp"
#include <GL/glut.h> //importing glut library
int WindowPositionX = 100;
int WindowPositionY = 100;
int WindowWidth = 512;
int WindowHeight = 512;
char WindowTitle[] = "世界の始まり";
void Initialize(void);
void Display(void);
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitWindowPosition(WindowPositionX, WindowPositionY);
glutInitWindowSize(WindowWidth, WindowHeight);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutCreateWindow(WindowTitle);
glutDisplayFunc(Display);
Initialize();
glutMainLoop();
return 0;
}
void Initialize(void){
glClearColor(1.0, 1.0, 1.0, 1.0);
glEnable(GL_DEPTH_TEST);
}
void Display(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
Мой код "task.json". Я установил опцию «-I» для поиска файла заголовка по заданному пути (в этом случае он будет искать в «C: \ Users \ Ayata \ Documents \ Work \ freeglut-3.0.0 \ include»)
{
"version": "2.0.0",
"tasks": [
{
"label": "build main",
"type": "shell",
"command": "gcc",
"args": [
"-I",
"C:\\MinGW\\include",
"-I",
"C:\\Users\\Ayata\\Documents\\Work\\freeglut-3.0.0\\include",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}",
"${file}"
],
"group": {
"kind": "build",
"isDefault": true,
}
},
]
}
~ Другая информация ~
ОС: Windows 10 (64-разрядная версия)
gcc версия: gcc (MinGW.org GCC-8.2.0-3) 8.2.0
Заголовочный файл
"glut.h" находится в "C: \ Users \ Ayata \ Documents \ Work \ freeglut-3.0.0 \ GL".
cpp файл "main.cpp" находится по адресу "C: \ Users \ Ayata \ Documents \ WorkReport \ MakeGameByUsingCpp \ main.cpp".
json-файл "task.json" находится по адресу "C: \ Users \ Ayata \ Documents \ WorkReport \ MakeGameByUsingCpp.vscode \ tasks.json".
↓ Изображение моего окружения
https://imgur.com/a/Z4w0Wt4