Eclipse标记OpenGL函数无法解析

Posted

技术标签:

【中文标题】Eclipse标记OpenGL函数无法解析【英文标题】:Eclipse marks OpenGL functions cannot be resolved 【发布时间】:2012-05-02 19:26:16 【问题描述】:

我尝试在 Eclipse C/C++ 中使用一些 OpenGL 函数。 eclipse 可以识别 GlClear 等一些“标准”函数,而 glBindBuffer() 和 glEnableVertexAttribArray() 等其他函数则不能。它们只是用红色下划线。

不管编译是否成功,就是这个令人不安的下划线..

我已经链接了 glut、GL、GLU 和 GLEW,我的操作系统是 arch linux。我使用eclipse 3.7.2

为了避免这些错误,我还需要做什么?

【问题讨论】:

尝试项目属性 -> c/c++ 常规 -> 路径符号 -> 库路径并添加缺少的库,也尝试清理/构建项目 我应该添加哪些缺少的库? 也许你应该检查你的 OpenGL 版本。 glBindBuffer() 受 OpenGL 1.5 及更高版本支持,glEnableVertexAttribArray() 受 OpenGL 2.0 及更高版本支持。 【参考方案1】:

尝试右键单击您的项目并在弹出菜单中:索引 > 重建

【讨论】:

【参考方案2】:

下划线表示 C++ Indexer 无法识别符号。检查这是否有帮助:

How can I get Eclipse to index code inside #ifdef .... #endif

为了使用 OpenGL 2.0 函数,我在源文件中定义了 GL_GLEXT_PROTOTYPES 符号,但索引器没有选择它。它必须在项目设置中定义,位于:项目属性 > C/C++ 常规 > 路径和符号下。然后重建索引后,错误就消失了。

【讨论】:

这对我有用。我刚刚添加了 GL_GLEXT_PROTOTYPES 符号,所有 Eclipse 索引器未解决的功能问题都消失了。谢谢。【参考方案3】:

如果您使用 Eclipse CDT 来实际构建您的项目,最简单的解决方案是让 Eclipse 从构建过程中自动学习您的包含路径。

在您的项目属性中,转到 C/C++ Build->Discovery Options,然后选中“自动发现路径和符号”复选框。

glBindBuffer() 和 glEnableVertexAttribArray() 在 GL/glext.h 中声明,而不是在 GL/gl.h 中。如果将光标放在 #include 行上,右键单击它,然后选择“Open Declaration”,Eclipse 应该会打开它认为的标题 /em> 是标题。您的实现可能会也可能不会自动在 中包含 ;值得检查。

【讨论】:

以上是关于Eclipse标记OpenGL函数无法解析的主要内容,如果未能解决你的问题,请参考以下文章

VC中使用openGL链接显示 无法解析的外部符号

VC中使用openGL链接显示 无法解析的外部符号

函数“strlen”无法解析 - Eclipse cpp

无法解析为类型(jsp + eclipse)

VS2015+OpenGL4.0开发编译时弹出错误:glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符号在函数 _GetRegistrySy

OpenGL glut库