๊ธฐ๋ณธ ์ ๋ณด :
์ง๋ฌธ ์ค๋ช
:
์ต๊ทผ์ ์ ๋ ์ปดํจํฐ ๊ทธ๋ํฝ ๊ด๋ จ ์์
์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์์กฐ๋กญ๊ฒ ์งํ๋๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ 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
ํ์ฌ ํ์ผ์ ๋งํฌํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋glfw3.h์์ ํจ์๋ฅผ ์ฌ์ฉํ ๋ g ++์ "-lglfw"์ธ์๋ฅผ ์ถ๊ฐํ์ฌ ์ ํํ ๋์ผํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
ํ์ง๋ง ๊ธฐ์ ๊ด๋ จ ๊ธฐ๋ฅ์ธ 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
}
}
]
}
๋ค๋ฅธ ์์
์์ด args์ glad.c
๋ฅผ ๋ฃ๋ ๊ฒ์ ๋ํด ์ฌ์ ํ ๊ฑฑ์ ์ด๋ฉ๋๋ค.
g ++์ ๋ํ args์ ์์๊ฐ ์ค์ํฉ๋๊น ์๋๋ฉด ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ก ์ด์ด์ง๊น์?
๊ฝค ์ค๋ซ๋์ ๋๋ฅผ ๊ดด๋กญ ํ์ต๋๋ค. ์ด์จ๋ ๊ฐ์ฌํฉ๋๋ค!
(PS : ์์งํ ์ ๋ C / Cpp์ ์ ์ธ์ ๋๋ค. VS์ ๊ฐ์ IDE์์ด ํ์ฌ lib์ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฒ์์ ๋๋ค. , gcc ๋ฑ)
glad.c
ํฌํจ๋์ด ์์ผ๋ฉด ๊ด์ฐฎ์ต๋๋ค.
-lglfw
์ ์ธ์ ๋ชฉ๋ก์ ๋์ผ๋ก ์ด๋ํ๋ ค๊ณ ํฉ๋๋ค (๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ง์ปค ๋ช
๋ น์ ๊ฒฝ์ฐ).
์ด์ ๋ ๋ฐ์ด๋๋ฆฌ ์์ฑ์ด 1) ์ปดํ์ผ๊ณผ 2) ๋งํฌ์ ๋ ๋จ๊ณ๋ก ๋๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ผ์ ์ปดํ์ผํ๋ ค๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ํ์ํฉ๋๋ค (์ผ๋ฐ์ ์ผ๋ก -c
ํ๋๊ทธ๋ก ์ํ๋๊ณ .o
์ถ๋ ฅ) .o
ํ์ผ์ ํจ๊ป ์ฐ๊ฒฐํ๊ณ ์ต์ข
์คํ ํ์ผ์ ๋ง๋ญ๋๋ค. GCC / G ++๋ ๋ง์ปค (์ผ๋ฐ์ ์ผ๋ก ld
)๋ฅผ ํธ์ถํ๊ธฐ์ ์ถฉ๋ถํ ์น์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ C / C ++ ํ์ผ์ ์ ๋ฌํ๋ฉด ์ปดํ์ผ๋๊ณ ์คํ ํ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ง์ปค ์์ฒด๋ ์คํ ํ์ผ์ ๊ฐ๋ฅํ ํ ์ ๊ฒ ๋ฃ์ผ๋ ค๊ณ ํ๋ฏ๋ก ๋งจ ์ฒ์์ -lglfw
์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฌํ๋ฉด (์ฒซ ๋ฒ์งธ ์ธ์) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ๋ฌ ์ฌ๋ณผ์ด ๋ด ๋ณด๋ธ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค ( ์ : glfwGetProcAddress
)ํ์ง๋ง ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐํธ๋ฅผ ์ฐธ์กฐํ๋ ํ์ผ์ด ์์ผ๋ฏ๋ก ํ๊ธฐ๋ฉ๋๋ค (ํ์ผ์ด ํด๋น ๊ธฐํธ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ์ํ์ง ์์ง๋ง ๋์ค์ ์ ๋ฌ๋จ).
๊ฐ์ธ์ ์ผ๋ก ๋๋ ๋งค์ฐ ๊ฐ๋จํ๊ณ ๊ธฐ๋ณธ์ ์ธ Makefile
์ฐพ๊ณ ๊ทธ๊ฒ์ผ๋ก ์์
ํ ๊ฒ์
๋๋ค.
์กฐ์ธ๊ณผ ์์ธํ ์ค๋ช ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋น์ ์ ๋ด ๋ฌธ์ ๋ฅผ ์๋ฒฝํ๊ฒ ํด๊ฒฐํ์ต๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
glad.c
๋ฅผ ํ์ผ๋ก ์ปดํ์ผํด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํฉ๋๋ค .๋น๋ ์ค์ ์ ๋ณด์ฌ ์ฃผ๊ฑฐ๋
glad.c
๊ฐ ์ปดํ์ผ๋ฌ (๋ฐ ์ ํ์ ์ผ๋ก ๋ง์ปค์glad.o
๋ก ์ ๋ฌ๋์๋์ง ํ์ธํ ์ ์์ต๋๊น?