2011-09-07 2 views
3

쉐이더를 작성하여 OpenGL 프로그램에 통합하는 방법을 배우려고합니다. GLUT를 사용하지 않고 유효한 OpenGL 환경을 만들기 위해 SFML 1.6을 사용하고, IDE는 Codeblocks입니다. 내 카드는 OpenGL 3.1 및 GLSL 1.3을 지원합니다). 그러나 나는 걸림돌을 때렸다. 내 프로그램에 GLSL 셰이더를 통합하는 데 GLEW가 필요한 것 같습니다. 그래서 가서 GLEW에 소스 코드를 찾아서 CodeBlocks를 사용하여 정적 라이브러리로 컴파일했습니다. 마지막 코멘트 here의 지침에 따라 (내가 여기에 나와 있지 않았기 때문에 #define GLEW_STATIC을 C 파일에 추가했습니다. 내가 지금 네 운영자와 파일을 가질 수 있도록,) 추가 :CodeBlocks를 사용하여 GLEW를 SFML 프로젝트에 연결할 때의 문제점

libglew32.a, libglew32d.a, libglew32mx.a을

libglew32mxd.a, 어디서 찾을 수 내 컴파일러 말 했어요 헤더 파일들 (glew.h, glxew.h, wglew.h)과 필자는 관련 라이브러리 디렉토리를 설정 -> 컴파일러 & 디버거에 추가하여 링커에게 라이브러리를 찾을 위치를 알려주었습니다. 디렉토리 검색. 내 프로젝트의 Build Options-> Linker Settings-> Link Libraries에서 위의 네 가지를 링크했습니다.

정의되지 않은 참조 일부 reading 내가 추가 할 필요가 있다고 나에게 말했다

'_imp__glewInit'로 : 위의 모든 수행

, 나는() glewInit를 호출하려고 다음과 같은 오류가 발생했습니다 #define GLEW_STATIC 전에 #include <glew.h> 전에, 그래서, 그리고 지금 나는 "wglGetProcAddress @ 4"오류 (내 프로그램에서 GLEW 코드의 유일한 줄은 입니다)에 대한 정의되지 않은 참조를 얻었습니다 :

Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp||In function 'int main()':| 
Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp|43|warning: unused variable 'LightOn'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
||=== Build finished: 23 errors, 1 warnings ===| 

나는 실종됐다. 이 모든 (링크/컴파일/등)의 기술적 측면은 여전히 ​​새롭고 나에게 혼란 스럽다.

GLSL을 작동 시키려면 GLSL 셰이더를 내 SFML OpenGL 프로젝트에 통합 할 수 있도록하려면 어떻게해야합니까? (아니면 내가 어떻게 든 GLEW 나 다른 외부 라이브러리가 없으면 더 쉽게 할 수 있겠는가?) 어느 쪽이 좋을까?

답변

4

또한 opengl32.lib를 링크해야합니다. 링커가 누락 된 함수는 opengl32.dll의 일부이며 이에 액세스하려면 해당 링커에 링크해야합니다. 정적 라이브러리가 아니라 최종 프로그램에 있습니다. 기술적으로 정적 인 라이브러리는 객체 파일의 아카이브, 즉 컴파일 단계의 결과와 같은 것입니다. DLL에 연결하려면 실행 바이너리 컨텍스트에서해야합니다.

+0

대단히 감사합니다! 그 트릭을 했어! – GarrickW

관련 문제