Проект XCode не может распознавать определенные команды GLUT - PullRequest
7 голосов
/ 16 ноября 2011

Я создаю проект GLUT / OpenGL в XCode 4. Я добавил фреймворки glut / opengl, соединил все мои библиотеки - все хорошо, за исключением того, что по какой-то причине моя функция main () не принимает glutInit (& argc, argv) и выдает мне сообщение об ошибке «нет соответствующего вызова функции для glutInit (). Странно, однако, что он принимает некоторые другие функции glut, такие как glutInitDisplayMode () и glutCreateWindow (), но не glutInit ( ).

Также я использую 3 функции обратного вызова

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

Мой проект принимает только первый, но не распознает другие два, выдавая ту же ошибку, что и с glutInit ().

Есть идеи, что может пойти не так?

Ответы [ 3 ]

34 голосов
/ 05 января 2012

У меня была точно такая же ошибка.

Я наконец-то решил проблему, внеся изменения в аргумент функции main().

Проверьте, является ли argvобъявлен как const.При удалении его из аргумента функции main ошибка glutInit исчезла.

// delete const from argv declaration 
int main(int argc, const char * argv[]) // from this,
int main(int argc, char * argv[])       // to this.
2 голосов
/ 28 декабря 2013

По моему скромному мнению, лучше const_cast вводить аргументы, чтобы избежать несоответствия типов в C ++, взгляните на фрагмент кода ниже:

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

Таким образом, вы указываете будущему читателю вашей программы, что вы знаете, что argv является константой, и const_cast - если вы знаете, что делаете.

1 голос
/ 28 декабря 2011

Не знаю, если вы нашли свой ответ, но похоже, что вы не добавили среду GLUT в свой проект XCode (при условии Xcode 4.x):

Нажмите на самый верхний значок проекта на боковой панели главного окна.

Нажмите «+» в разделе «Связать двоичные файлы с библиотеками» и выполните поиск по «переизбытку».

Добавьте этот фреймворк.

Убедитесь, что

#import <GLUT/glut.h>

В вашем заголовочном файле.

...