Glad: Max OS์—์„œ g ++ ์‚ฌ์šฉ ๋ฌธ์ œ : ์•„ํ‚คํ…์ฒ˜ x86_64์˜ ์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐํ˜ธ

์— ๋งŒ๋“  2018๋…„ 11์›” 06์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Dav1dde/glad

๊ธฐ๋ณธ ์ •๋ณด :

  1. ์‹œ์Šคํ…œ : macOS High Sierra (10.13.6)
  2. ์—๋””ํ„ฐ : vs ์ฝ”๋“œ (์ตœ์‹  ๋ฒ„์ „)
  3. ์ปดํŒŒ์ผ๋Ÿฌ : g ++ (Xcode)
  4. ๋Œ€์ƒ : GLFW + GLAD ๋ฐฐํฌ

์งˆ๋ฌธ ์„ค๋ช… :
์ตœ๊ทผ์— ์ €๋Š” ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ ๊ด€๋ จ ์ž‘์—…์„ ๋ฐฐ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 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๋ฅผ ๋งŒ๋‚˜๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•œ ์ผ :

  1. ํ—ค๋“œ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    #include glad/glad.h  
    #include GLFW/glfw3.h
    
  2. ์ž‘์—… ๊ณต๊ฐ„์— "glad.c"ํŒŒ์ผ์„ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

  3. "g ++ -L ๋˜๋Š” I / usr / lib ๋˜๋Š” / usr / local / lib ๋˜๋Š” / usr / local / include"๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

C glad1 question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

glad.c ๋ฅผ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ฉ๋‹ˆ๋‹ค .

g++ example/c++/hellowindow2.cpp -Ibuild/include build/src/glad.c -lglfw -ldl

๋นŒ๋“œ ์„ค์ •์„ ๋ณด์—ฌ ์ฃผ๊ฑฐ๋‚˜ glad.c ๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ (๋ฐ ์„ ํƒ์ ์œผ๋กœ ๋ง์ปค์— glad.o ๋กœ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  4 ๋Œ“๊ธ€

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 ์ฐพ๊ณ  ๊ทธ๊ฒƒ์œผ๋กœ ์ž‘์—… ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์กฐ์–ธ๊ณผ ์ž์„ธํ•œ ์„ค๋ช…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‚ด ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰