GLFW3 错误:“glfwGetWin32Window”未在此范围内声明

Posted

技术标签:

【中文标题】GLFW3 错误:“glfwGetWin32Window”未在此范围内声明【英文标题】:GLFW3 error: 'glfwGetWin32Window' was not declared in this scope 【发布时间】:2013-10-30 10:40:11 【问题描述】:

我在 GLFW3 documentation 中寻找原生 API 访问以获取 HWND,但它不在我的 GLFW/glfw3.h 文件中。是否有任何#define 能够通过编译器找到它?我也无法使用text-finder在文件本身中手动找到它,那我该如何获取呢?

PS。我无法标记glfw3

编辑:

代码:

#define GLFW_INCLUDE_GLU

#define GLFW_EXPOSE_NATIVE_WGL
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GL/GLFW/glfw3native.h>
#include <GL/GLFW/glfw3.h>

#include <ctime>
#include <cstdlib>
...

int main()

    //glfw setup
    ...
    //bla bla bla
    ...
    //all I want to do is to call this one
    ScreenToClient( glfwGetWin32Window(window), &point);

【问题讨论】:

试图包含glfw3native.h? @thokra 哦,谢谢伙计,但是如何知道我使用的是哪个“上下文 API”? 编辑:从头开始,context API 是什么意思? @thokra 我已经这样做了#define GLFW_EXPOSE_NATIVE_WGL#define GLFW_EXPOSE_NATIVE_WIN32,但仍然说no context API specified。我在包含头文件之前定义它。 @thokra Uhm,我不知道还有什么意思。是编译器在抱怨。 【参考方案1】:

在对您的问题感到困惑后,我自己尝试了一下,我认为 include 顺序 是您的问题。一个在 Linux 上模仿您在 Windows 上尝试执行的操作的最小代码示例可以按预期编译和工作:

#define GLFW_EXPOSE_NATIVE_X11
#define GLFW_EXPOSE_NATIVE_GLX
#include <GLFW/glfw3.h>
#include <GLFW/glfw3native.h>

int main (int argc, char ** argv)

  glfwInit();    
  GLFWwindow* window = glfwCreateWindow (256, 256, "GLFW", nullptr, nullptr);    
  glfwGetX11Window(window);      
  glfwTerminate();

  return 0;

编辑:添加glfwTerminate() 以进行正确清理。请注意,当然应该进行适当的错误检查,但为了演示一个最小的示例,以上内容就足够了。

【讨论】:

以上是关于GLFW3 错误:“glfwGetWin32Window”未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 GLFW3 初始化 GLew

GLFW3 中是不是有 glutDisplayFunc 等价物?

linux中的C++ GLFW3全屏拉伸问题

glGenVertexArrays 上的 OpenGL C++ glfw 3 glew 错误 1282

如果 OpenGL 3+ 请求,glfw3 不绘图?

glfw3 - 这个绘图调用完全不在视锥体中