Code :: Blocks linux glext.h"对uint64_t的引用含糊不清"

时间:2014-08-30 09:55:23

标签: c++ linux opengl codeblocks glfw

我正在使用Xubuntu 14.04中的Code :: Blocks创建一个OpenGL应用程序,并从源代码安装了GLFW3。在eclipse CDT中它可以工作,但在这个IDE中,编译时出现错误信息:

[...]
/usr/include/GL/glext.h|1404|error: reference to ‘uint64_t’ is ambiguous|
/usr/include/stdint.h|55|note: candidates are: typedef long unsigned int uint64_t|
third_party/glm/fwd.hpp|907|note:                 typedef glm::detail::uint64                 glm::uint64_t|
/usr/include/GL/glext.h|1404|error: ‘uint64_t’ does not name a type|
/usr/include/GL/glext.h|1405|error: reference to ‘int64_t’ is ambiguous|
/usr/include/x86_64-linux-gnu/sys/types.h|197|note: candidates are: typedef long int int64_t|
third_party/glm/fwd.hpp|305|note:                 typedef glm::detail::int64 glm::int64_t|
/usr/include/GL/glext.h|1405|error: ‘int64_t’ does not name a type|
/usr/include/GL/glext.h|1478|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|1479|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|1480|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|1482|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|1483|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|1547|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|1548|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|2447|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|2591|error: reference to ‘uint64_t’ is ambiguous|
/usr/include/stdint.h|55|note: candidates are: typedef long unsigned int uint64_t|
third_party/glm/fwd.hpp|907|note:                 typedef glm::detail::uint64 glm::uint64_t|
/usr/include/GL/glext.h|2591|error: ‘uint64_t’ does not name a type|
/usr/include/GL/glext.h|2593|error: typedef ‘GLuint64’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2593|error: ‘PFNGLGETTEXTUREHANDLEARBPROC’ was not declared in this scope|
/usr/include/GL/glext.h|2594|error: typedef ‘GLuint64’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2594|error: ‘PFNGLGETTEXTURESAMPLERHANDLEARBPROC’ was not declared in this scope|
/usr/include/GL/glext.h|2595|error: typedef ‘PFNGLMAKETEXTUREHANDLERESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2595|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2596|error: typedef ‘PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2596|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2597|error: typedef ‘GLuint64’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2597|error: ‘PFNGLGETIMAGEHANDLEARBPROC’ was not declared in this scope|
/usr/include/GL/glext.h|2598|error: typedef ‘PFNGLMAKEIMAGEHANDLERESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2598|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2598|error: expected primary-expression before ‘access’|
/usr/include/GL/glext.h|2599|error: typedef ‘PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2599|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2600|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|2601|error: ‘GLuint64’ does not name a type|
/usr/include/GL/glext.h|2602|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|2603|error: ‘GLuint64’ does not name a type|
/usr/include/GL/glext.h|2604|error: typedef ‘PFNGLISTEXTUREHANDLERESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2604|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2605|error: typedef ‘PFNGLISIMAGEHANDLERESIDENTARBPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|2605|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|2606|error: ‘GLuint64EXT’ has not been declared|
/usr/include/GL/glext.h|2607|error: ‘GLuint64EXT’ does not name a type|
/usr/include/GL/glext.h|2608|error: ‘GLuint64EXT’ has not been declared|
/usr/include/GL/glext.h|7547|error: ‘GLint64’ has not been declared|
/usr/include/GL/glext.h|7548|error: ‘GLuint64’ has not been declared|
/usr/include/GL/glext.h|8235|error: typedef ‘GLuint64’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|8235|error: ‘PFNGLGETTEXTUREHANDLENVPROC’ was not declared in this scope|
/usr/include/GL/glext.h|8236|error: typedef ‘GLuint64’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|8236|error: ‘PFNGLGETTEXTURESAMPLERHANDLENVPROC’ was not declared in this scope|
/usr/include/GL/glext.h|8237|error: typedef ‘PFNGLMAKETEXTUREHANDLERESIDENTNVPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|8237|error: ‘GLuint64’ was not declared in this scope|
/usr/include/GL/glext.h|8238|error: typedef ‘PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC’ is initialized (use decltype instead)|
/usr/include/GL/glext.h|8238|error: ‘GLuint64’ was not declared in this scope|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

编译器是GNU GCC,代码是c ++ 11。链接库按以下顺序排列:

X11
pthread
Xrandr
Xi
Xxf86vm
rt
m
GL

链接器搜索目录:

/usr/lib
/usr/local/lib
/usr/include           *Tried in Compiler search directories too
/usr/local/include     *Tried in Compiler search directories too

如果您还需要更多,请询问。 PD:我没有直接包含GL标题,glfw3为我做了。

1 个答案:

答案 0 :(得分:1)

似乎,在你的代码(或GLFW3的代码)中你有类似的东西:

using namespace glm::detail;

这会在您的命名空间中带来uint64_t的其他定义。如果要指定要使用的类型,可以删除using namespace或完全指定要使用的类型;它可能是::uint64_tglm::detail::uint64_t

作为另一种解决方案,请尝试更改包含文件的顺序。