我正在XCode 4中创建一个GLUT / OpenGL项目。我添加了glut / opengl框架,将我的所有库链接在一起 - 一切都很好,除了某些原因我的main()函数不接受glutInit (& argc,argv)并给出了错误消息“没有匹配的函数调用glutInit()。但奇怪的是,它接受了一些其他的过剩函数,如glutInitDisplayMode()和glutCreateWindow()但不是glutInit()。
另外,我正在使用3个回调函数
glutDisplayFunc(DisplayCallback)
glutReshapeFunc(ReshapeCallback)
glutKeyboardFunc(KeyboardCallback)
我的项目只接受第一个,但不识别其他两个,给出与glutInit()相同的错误。
关于可能出现什么问题的任何想法?
答案 0 :(得分:34)
我有完全相同的错误。
我最终通过更改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.
答案 1 :(得分:2)
根据我的拙见,最好const_cast
输入参数以避免C ++中的类型不匹配,请看下面的代码片段:
glutInit(&argc, const_cast<char**>(argv));
通过这种方式,您向计划的未来读者表明,您知道argv
是一个常数,而const_cast
- 您知道自己在做什么。
答案 2 :(得分:1)
Dunno如果你找到了答案,但听起来你没有将GLUT框架添加到你的Xcode项目中(假设是Xcode 4.x):
单击主窗口侧栏中最顶部的项目图标。
点击“Link Binary With Libraries”下的“+”并搜索“过剩”。
添加该框架。
确保
#import <GLUT/glut.h>
在您的标头文件中。