2014-03-30 3 views
0

저는 OpenGL 기반 게임을 쓰고 있습니다. 여기에는 glew, glfw3이라는 두 라이브러리 만 포함됩니다. 그것을 실행하기 위해서는 분명히 OpenGL이 설치되어 있어야한다. 우회하고 싶은 가정이다. 게임 디렉토리 안에 모든 적합한 바이너리를 모아서이 라이브러리에 로컬로 연결하려고 시도했지만 컴파일러는 모든 기능에 대해 정의되지 않은 참조를 주장합니다. 내가 잘못한 일을하고있는 것입니까 아니면 불가능한 것입니까? 나는 Windows를 사용하고 있지만 같은 이유로 Linux에서는 실패합니다.설치하지 않고 OpenGL을 실행 하시겠습니까?

+0

당신이 무엇을 요구하고 있는지 분명하지 않습니다. 물론 glew와 glfw를 정적으로 연결할 수 있습니다. 그러나 사용자가 하드웨어와 일치하는 다른 구현을 사용해야하므로 실제 OpenGL 라이브러리에서는이 작업을 수행 할 수 없습니다. – derhass

+0

다른 구현이 모두 바이너리에 포함되어 있지 않습니까? 내 질문은 무엇을 잘못하고있는 것입니까? 내가 연결해야하는 정확한 라이브러리는 무엇입니까? –

+0

실제로 OpenGL이 무엇인지 혼란스러워합니다. glew 및 GLFW는 일부 도우미 라이브러리이며 OpenGL의 일부가 아닙니다. – derhass

답변

1

OpenGL은 설치하는 라이브러리가 아니며 드라이버의 일부로 구현 된 API입니다. 해결되지 않는 기호에 대해 불평하는 컴파일러는 최종 사용자의 컴퓨터 상황과 완전히 관련이 없습니다. 그리고 당신의 경우에는 컴파일러/링커에게 어떤 라이브러리와 API 인터페이스가 프로그램 바이너리로 링크 할지를 말하지 않은 것 같습니다. 귀하의 컴파일러는 따라서 내부 참조 중 일부는 redolve하지 않는 불평하고 있습니다.

OpenGL은 프로그램과 함께 제공되는 것이 아니며 그래픽 드라이버의 일부이며 프로그램은 사용자 컴퓨터에 설치된 OpenGL 버전을 사용해야합니다. 이를 위해 컴파일러 - 링커 옵션 -lGL을 전달하여 libGL.so에 동적으로 링크합니다.

GLEW는 시스템 OpenGL ABI에서 찾을 수없는 모든 OpenGL 함수를 동적으로 사후로드하므로 도우 공용 테이블 libGL.so을 통해 내 보내지 않습니다. 오히려 그들은 glXGetProcAddress을 사용하여 동적으로로드됩니다. 다소 지루한 작업입니다. GLEW는 OpenGL-3 이상에서 코어 프로파일과 관련하여 심각한 문제가 있음을 알려드립니다.

GLFW는 OpenGL 컨텍스트가있는 창을 설정하기위한 단순한 프레임 워크 라이브러리입니다.

GLEW 및 GLFW는 을 정적으로에 연결하는 것이 안전하며 그렇게하는 것이 좋습니다. 플래그를 사용하는 대신 연결될 소스 파일/편집 단위 목록에 libGLEW.alibGLFW.a을 추가하십시오.

+0

철저한 정보를 가져 주셔서 감사합니다. –

관련 문제