2011-11-15 2 views
7

XCode 4에서 GLUT/OpenGL 프로젝트를 만들고 있습니다. 내 라이브러리를 모두 연결 한 glut/opengl 프레임 워크를 추가했습니다. 어떤 이유로 든 내 기본 () 함수는 glutInit (& argc, argv)을 허용하지 않으며 "glutInit()과 일치하는 함수 호출이 없다는 오류 메시지를 표시합니다. 이상한 일은 glutInitDisplayMode()와 같은 다른 glut 함수 중 일부를 허용한다는 것입니다. glutCreateWindow()하지만, 그냥 glutInit의(). 또한XCode 프로젝트가 특정 GLUT 명령을 인식하지 못합니다.

, 나는 3 개 콜백 함수

glutDisplayFunc(DisplayCallback)  
glutReshapeFunc(ReshapeCallback)  
glutKeyboardFunc(KeyboardCallback) 

내 프로젝트 AC를 사용하고 있습니다 첫 번째 코드 만 끝내지 만 다른 두 코드는 인식하지 못하므로 glutInit()과 동일한 오류가 발생합니다.

어떤 아이디어가 잘못 될 수 있습니까?

+3

문제를 나타내는 완벽한 최소 프로그램을 게시하십시오. – genpfault

답변

1

몰라 당신은 당신의 대답을 찾을 경우,하지만 당신은 (엑스 코드 4.x의 가정) Xcode 프로젝트에 GLUT 프레임 워크를 추가하지 않은 것 같은데 : 최상위 프로젝트 아이콘에

클릭을 메인에 창의 사이드 바.

'링크 바이너리 - 라이브러리'에서 '+'를 클릭하고 'glut'을 검색하십시오.

해당 프레임 워크를 추가하십시오.

#import <GLUT/glut.h> 

이 헤더 파일에 있는지 확인합니다.

33

나는 정확히 같은 오류가있었습니다.

마지막으로 main() 함수의 인수를 변경하여이 문제를 해결했습니다.

argvconst으로 선언되어 있는지 확인하십시오. main 함수 인수에서 제거하면 glutInit 오류가 사라집니다.

glutInit(&argc, const_cast<char**>(argv)); 

향후 독자에게 의미하는이 방법을 :

// delete const from argv declaration 
int main(int argc, const char * argv[]) // from this, 
int main(int argc, char * argv[])  // to this. 
+0

누군가 이런 일이 일어난 이유를 말할 수 있습니까? 내 말은'const'가 없으면 작동하지 않는다는 뜻이다. – BRabbit27

+3

다른 상황에서 쉽게 발견하여 해결할 수있는 C++ 유형 불일치 문제입니다. argv의 glutInit() 선언은 argv의 내용이 쓰기 가능 함을 의미하지만 main 함수에서 glutInit에 전달 된 argv는 읽기 전용이므로 충돌합니다. – Keugyeol

2

내 소견에 따르면, 아래의 코드를 살펴, C++에서 유형 불일치를 방지하기 위해 const_cast 입력 인수하는 것이 좋습니다 argv은 상수이고 const_cast은 당신이하는 일을 알고 있다는 것을 알고있는 프로그램입니다.

관련 문제