OpenGL 튜토리얼을 따르고 있으며 GLEW를 사용하여 FPS 카운터를 설정하는 마지막 단계입니다. #pragma comment(lib, "glew32sd.lib")
라이브러리를 성공적으로 연결 하기 위해 사용해야하는 문제가있었습니다 . freeglut의 경우 명시 적으로 참조 할 필요가 없었습니다.
내 구조는 간단합니다.
library\
dll\
freeglut.dll
glew32d.dll
include\
GL\
freeglut.h
freeglut_ext.h
freeglut_std.h
glew.h
glut.h
glxew.h
wglew.h
lib\
freeglut.lib
glew32d.lib
glew32sd.lib
include \ dir을 포함하고 lib에서 추가 라이브러리를 찾도록 Visual Studio를 설정했습니다. dll 폴더는 빌드 후 작업을 통해 출력에 복사하도록 설정됩니다. 지금까지는 freeglut로 모든 것이 잘 되었기 때문에 작동한다고 확신합니다. glew 만 작동하지 않습니다.
어떻게 비주얼 스튜디오는 하지 링크 glew 수 있지만 freeglut와 함께 일하고있다? 그들은 같은 디렉토리에 있습니다. 나는 freeglut가 링커의 출력에서 볼 수 있기 때문에 링크되고 있음을 알 수 1> Processed /DEFAULTLIB:freeglut.lib
있습니다. 두 라이브러리 모두 내 컴퓨터에서 컴파일됩니다.
GLEW를 정적 라이브러리로 컴파일하려고했기 때문에 컴파일러가 .dll을로드하지 않는다고 가정하므로 제거하는 것이 좋습니다. 그러나 두 경우 모두 작동하지 않습니다. 나는 #define GLEW_STATIC
및을 사용해 보았지만 #define GLEW_BUILD
링크하지 않을 것입니다.
그런 다음 SO에 대한 답변을 우연히 발견하고 그렇게하면 #pragma comment(lib, "glew32sd.lib")
내 라이브러리가 올바르게로드 된다는 것을 알았 습니다. 이제 링커에게이 .lib를 사용하도록 명시 적으로 지시하면 작동한다고 가정합니다. 그런데 왜 freeglut가 자동으로로드됩니까? 나는 그것을 어디에서나 직접 참조하지 않습니다.
지금 내 코드가 작동하고 있지만 궁금합니다. 저는 새로운 C ++ 개발자이고 정적 라이브러리와 동적 라이브러리의 개념은 여전히 제 생각에 너무 신선합니다.
pragma를 통해 또는 프로젝트 속성의 프로젝트-> 링커-> 입력-> 추가 종속성 영역에서 사용하는 라이브러리를 링커에 알려야합니다.
freeglut의 경우 freeglut_std.h
명시 적으로를 정의하지 않는 한 pragma가 제공 FREEGLUT_LIB_PRAGMAS
됩니다 0
. 그렇게했다면 자체 pragma를 통해 또는 추가 종속성 영역에서 종속성을 수동으로 추가해야합니다.
일반적으로 필요한 종속성을 추가하는 것은 사용자에게 달려 있습니다. 내 경험상 도서관에서 자동으로 시도하는 경우는 드뭅니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다