我正在使用mac os 10.9,我有一个使用freeglut库的C++程序.当我尝试制作项目时.它给出了一个错误,我不知道这是我的错.这是消息:
In file included from /usr/X11/include/GL/freeglut.h:18:
/usr/X11/include/GL/freeglut_ext.h:177:27: error: functions that differ only in their return type cannot be overloaded
FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName );
Run Code Online (Sandbox Code Playgroud)
更多信息:我使用cmake(版本2.8.12)生成Makefile,安装了最新版本的Xcode和XQuartz.
任何帮助表示赞赏.谢谢.
在glut.h和freeglut_ext.h文件中:
在glut.h中:
#if (GLUT_API_VERSION >= 5)
extern void * APIENTRY glutGetProcAddress(const char *procName) OPENGL_DEPRECATED(10_3, 10_9);
#endif
Run Code Online (Sandbox Code Playgroud)
在freeglut_ext.h中:
/*
* Extension functions, see freeglut_ext.c
*/
typedef void (*GLUTproc)();
FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName );
Run Code Online (Sandbox Code Playgroud)
其中一个声明返回一个函数类型GLUTproc(指定一个不带参数的函数),另一个声明返回一个指针(void*).两个函数都使用相同的参数(单个参数const char*).编译器说的是真的.
你只看到一个关于"重载"的抱怨,因为它是C++.在C++中,如果编译器认为它看到两个具有相同名称的不同函数,那么每个函数都需要具有不同的参数(例如,不同数量的参数或不同类型).
在这种情况下,我怀疑功能是不同的; 它们的意思是相同的,并且在某些时候API发展并改变了声明.
您需要找到一些方法来阻止编译器同时看到两个声明(可能通过设置GLUT_API_VERSION).如果必须,你可以#include只使用其中一个文件,看看你是否真的需要另一个文件(如果你这样做,你可能需要手动声明一些东西以避免第二个#include).
| 归档时间: |
|
| 查看次数: |
10733 次 |
| 最近记录: |