从clojure

时间:2019-05-09 15:50:56

标签: java clojure clojure-java-interop

我正在尝试从clojure直接了解如何使用LWJGL3。到目前为止,我发现的唯一绊脚石是一个函数,有时需要一个参数为null,但在指纹中它的类型为long。 有问题的特定功能是glfwCreateWindow​类中的org.lwjgl.glfw.GLFW。 最后两个参数是long,但是当使用窗口模式时,第一个参数应为null,第二个参数应不使用gl上下文。 问题是互操作调用检查该函数的指纹并查看它应该是long,因此传递nil会得到IllegalArgumentException

我环顾四周,但是似乎没有人解决这个特殊问题。这与nil-punning无关,因为参数应该有时为nil。

这是我已经运行的代码:https://gist.github.com/Efimero/2c0af4ae3aeaf2c85136aa06ff077919

但是它只能工作,因为默认零值适合我的设置,但它们不是抽象的。

当我传递nil时,我希望正常调用该函数,但会出现异常。

1 个答案:

答案 0 :(得分:2)

这没有道理。 long在任何地方都不能为null。看来这是文档中的沟通不畅,包装的C或C ++库从那里泄漏了。

我强烈猜测在文档中说0的地方传递NULL是正确的。