ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΠ°:
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΡΡΡΡ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. ΠΡΠ΅ ΠΈΠ΄Π΅Ρ Π³Π»Π°Π΄ΠΊΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΎΠ·Π΄Π°Ρ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ env.Link, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°:
Undefined symbols for architecture x86_64:
"_gladLoadGLLoader", referenced from:
_main in main-5c211c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The terminal process terminated with exit code: 1
ΠΠ°ΠΆΠ΅ΡΡΡ, Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π» ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΡΠ°ΠΉΠ». ΡΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ "-lglfw" Π² g ++ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² glfw3.h.
ΠΠΎ ΠΏΡΠΈ Π²ΡΡΡΠ΅ΡΠ΅ Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ: gladLoadGLLoader, Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
Π§ΡΠΎ-ΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π»:
ΠΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ».
#include glad/glad.h
#include GLFW/glfw3.h
ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» Β«glad.cΒ» Π² ΡΠ°Π±ΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ.
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ glad.c
Ρ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ (Π°ΠΌΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
g++ example/c++/hellowindow2.cpp -Ibuild/include build/src/glad.c -lglfw -ldl
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ ΡΠ²ΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ glad.c
ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ (ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, glad.o
ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ)?
ΠΠ°, ΡΡ ΠΏΡΠ°Π²! Π― Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π» g ++ ΡΠ²Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ glad.c
, Ρ Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎΡ ΠΌΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ:
{
"version": "2.0.0",
"tasks": [
{
"label": "testwindow",
"type": "shell",
"command": "g++",
"args": [
"glad.c",
"-lglfw",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out",
"-g",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
ΠΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ, ΡΡΠΎ Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» glad.c
Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΠΌΠ΅Π΅Ρ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² g ++ ΠΈΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ?
ΠΡΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΠ»ΠΎ ΠΌΠ΅Π½Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅!
(PS: Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Ρ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² C / Cpp. Π― Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±Π΅Π· IDE, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ VS, Π·Π½Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΡΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ (ΠΊΠ½ΠΈΠ³Π° / Π²ΠΈΠ΄Π΅ΠΎΠ»Π΅ΠΊΡΠΈΡ) ΠΏΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ g ++ , gcc ΠΈ Ρ. Π΄.?)
ΠΠΊΠ»ΡΡΠ°Ρ glad.c
, ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ -lglfw
Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (ΡΠ°ΠΊ ΠΎΠ±ΡΡΠΎΠΈΡ Π΄Π΅Π»ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ°).
ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π΄Π²Π΅ ΡΠ°Π·Ρ: 1) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ 2) ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°, ΠΎΠ±ΡΡΠ½ΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² (ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³Π° -c
ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ .o
file) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ, ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ ΡΠ°ΠΉΠ»Ρ .o
Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». GCC / G ++ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΡΠ±Π΅Π·Π½Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ (ΠΎΠ±ΡΡΠ½ΠΎ ld
) Π΄Π»Ρ Π²Π°Ρ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ Π΅ΠΌΡ ΠΊΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² C / C ++, ΠΎΠ½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈΡ
ΠΈ ΡΠ²ΡΠΆΠ΅Ρ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». Π‘Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ Π΅ΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, -lglfw
Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ (ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ), ΠΎΠ½ ΡΠ²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π³ΡΡΠΏΠΏΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ( Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, glfwGetProcAddress
), Π½ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» Π½Π΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ (ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ ΡΠ°ΠΉΠ» ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ», Π½ΠΎ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΏΠΎΠ·ΠΆΠ΅).
ΠΠΈΡΠ½ΠΎ Ρ Π±Ρ ΠΏΠΎΠΈΡΠΊΠ°Π» ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ Makefile
ΠΈ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Ρ Π½ΠΈΠΌ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΎΠ²Π΅Ρ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅. ΠΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ
glad.c
Ρ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ (Π°ΠΌΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ ΡΠ²ΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ
glad.c
ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ (ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ,glad.o
ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ)?