Glad: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с использованиСм g ++ Π² ОБ Max: Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ символы для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 6 нояб. 2018  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Dav1dde/glad

Базовая информация:

  1. систСма: macOS High Sierra (10.13.6)
  2. Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€: vs code (послСдняя вСрсия)
  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

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, я Π½Π΅ связал ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ сторонний Ρ„Π°ΠΉΠ». яисправили Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ "-lglfw" Π² g ++ ΠΏΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² glfw3.h.
Но ΠΏΡ€ΠΈ встрСчС с связанной с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ: 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Β», Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо!

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 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
            }
        }
    ]
}

МСня всС Π΅Ρ‰Π΅ бСспокоит, Ρ‡Ρ‚ΠΎ я просто помСстил 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 ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π±Ρ‹ с Π½ΠΈΠΌ.

Бпасибо Π·Π° совСт ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС. Π’Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ мою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ