无法匹配glfwCreateWindow方法:LWJGL代码转换报错求助
LWJGL glfwCreateWindow 方法参数不匹配问题修复
问题还原
我跟着LWJGL教程学习,要把这段原生GLFW代码转成Clojure:
window = glfwCreateWindow(300, 300, "Hello World!", NULL, NULL);
写的Clojure代码是:
(let [window (GLFW/glfwCreateWindow (int 400) (int 300) "LWJGL" nil nil)]
编译时报错:
Syntax error (IllegalArgumentException) compiling . at (lwjgl_intro/core.clj:13:16). No matching method glfwCreateWindow found taking 5 args for class org.lwjgl.glfw.GLFW
问题原因
LWJGL3的Java包装类里,glfwCreateWindow的最后两个参数(monitor和share)是long类型,对应原生GLFW的指针类型。原生的NULL在Java中要对应0L,而不是nil——传nil会被当成null,和方法要求的long类型不匹配,导致JVM找不到对应方法签名。
修复代码
把最后两个nil换成0L即可:
(let [window (GLFW/glfwCreateWindow (int 400) (int 300) "LWJGL" 0L 0L)]
内容的提问来源于stack exchange,提问作者user1785730
相关产品推荐
相关产品推荐

