2017-12-23 32 views
-1

음, GLFW 시작하려고하지만 라이브러리를 연결하려고 할 때 몇 가지 문제가 발생합니다.GLFW 라이브러리 연결 오류

GLFW 페이지의 첫 번째 예를 컴파일하려고합니다.

#include <GLFW/glfw3.h> 

int main(void) 
{ 
    GLFWwindow* window; 

    /* Initialize the library */ 
    if (!glfwInit()) 
     return -1; 

    /* Create a windowed mode window and its OpenGL context */ 
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); 
    if (!window) 
    { 
     glfwTerminate(); 
     return -1; 
    } 

    /* Make the window's context current */ 
    glfwMakeContextCurrent(window); 

    /* Loop until the user closes the window */ 
    while (!glfwWindowShouldClose(window)) 
    { 
     /* Render here */ 
     glClear(GL_COLOR_BUFFER_BIT); 

     /* Swap front and back buffers */ 
     glfwSwapBuffers(window); 

     /* Poll for and process events */ 
     glfwPollEvents(); 
    } 

    glfwTerminate(); 
    return 0; 
} 

컴파일러 내가

glfw3.dll

내가 컴파일 할 때

libglfw3dll.a, 내가이 링커를 얻을 수 있습니다 내 프로젝트 폴더에서

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

오류

'__imp_glClear'에 대한 정의되지 않은 참조

무엇이 잘못 되었나요?

/---------------------- 편집 --------------------- -------/

죄송합니다, 나는 윈도우 10, 64 비트에서 일하고 있어요

조금 내 상황을 명확히 할 수있는 몇 가지를 ... 말을 잊어 버렸습니다.

는 컴파일러 ->와 Mingw 바이너리 -> 공식 페이지

에서 다운로드 나는 정적 라이브러리와 코드를 컴파일하기 위해 노력하고 내가 정의되지 않은 참조를 많이 얻었다.

g++ -L. -lopengl32 -lglu32 -lgdi32 -lglfw3 main.cpp 

그런 다음 동적 라이브러리 glfw.dll을 사용하려고했습니다. 또한 glfwllll.a 라이브러리를 링크하고 헤더를 포함하기 전에 GLFW_DLL 매크로를 정의했습니다. 마지막 옵션

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

은, 난 그냥 1 정의되지 않은 참조

나는 이것이 opengl32 라이브러리에서 것을 이해
undefined reference to `__imp_glClear' 

을 얻었다.

나는 또한 내가 찾을 수없는 것을 놓치고 있다는 것을 알고있다.

내가 다시 와서, 당신이 내게 손을 줘, 내가 뭘 놓쳤는 지 말해 줄래?

감사합니다.

+0

[learnopengl] (https://learnopengl.com/#!Getting-started/Creating-a-window)의 _GLAD_ 섹션으로 이동하십시오. 여기에 문제가있을 수 있습니다. –

답변

0

읽어 보시기 바랍니다 수동 GLFW: Building applications

우는 소리는 GNU 환경에 대한 부분을 인용한다. Windows 용 응용 프로그램을 개발하면 해당 지침도 찾을 수 있습니다.

GLFW는 pkg-config을 지원하며 glfw3.pc pkg-config 파일은 GLFW 라이브러리가 빌드되어 함께 설치 될 때 생성됩니다. pkg-config 파일은 라이브러리를 사용하는 데 필요한 모든 필수 컴파일 시간 및 링크 시간 플래그 및 종속성을 설명합니다. 업데이트가되거나 시스템간에 다를 경우 자동으로 올바른 정보를 얻을 수 있습니다.

전형적인 컴파일 및 링크 명령 줄과 같이 보일 수 GLFW 라이브러리의 정적 버전을 사용 :

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --static --libs glfw3` 

당신이 GLFW 라이브러리의 공유 버전을 사용하는 경우, 단순히 --static 플래그를 생략 .

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

또한 PKG_CONFIG_PATH 환경 변수를 사용하여, 먼저 설치하지 않고 glfw3.pc 파일을 사용할 수 있습니다.

env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

종속성은, OpenGL을하거나 GLU 포함되지 않습니다 GLFW는 OpenGL을, OpenGL을 ES 또는 실행시 필요로하고 GLU를 사용하지 않는 VULKAN 라이브러리를로드한다. OS X에서는 GLU가 OpenGL 프레임 워크에 내장되어 있으므로 GLU가 필요한 경우 별도의 작업을 수행 할 필요가 없습니다. GLU가 필요하고 Linux 또는 BSD를 사용하는 경우 glu pkg-config 패키지를 추가해야합니다.

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu` 

GLU는 사용되지 않으며 새로운 코드에 사용하지 않아야하지만 일부 레거시 코드가 필요합니다.

정적 버전의 GLFW 라이브러리를 사용하는 경우 GLU에 대해 정적으로 링크하지 않도록하십시오.

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu`