所以我想在OpenGL上试用jextract工具和Foreign Function and Memory API,但我在解决java.lang.UnsatisfiedLinkError: unresolved symbol: glutInit
时遇到了问题。JVM似乎无法找到OpenGL库的二进制文件来链接该方法。我知道你用System.load
方法加载库,但问题是我不知道我必须加载哪些二进制文件。jextract工具指向.h文件并按预期工作
`
System.load("/usr/lib/x86_64-linux-gnu/libOpenGL.so.0"); // loads fine but the error persists
try (var s = MemorySession.openConfined()) {
MemorySegment arc = s.allocate(ValueLayout.JAVA_INT, 0);
glutInit(arc, arc);
glutInitDisplayMode(GLUT_SINGLE());
glutInitWindowSize(400, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow(s.allocateUtf8String("Hello World!"));
MemorySegment callBack = allocate(OpenGLLauncher::displayMe, s);
glutDisplayFunc(callBack);
glutMainLoop();
}
`
我认为我需要加载一个.so文件(我使用ubuntu(,所以我尝试在/usr/lib中手动定位.so文件,我尝试了很多,但都没有成功。我试着找了一下,但没有什么适合我的案子。以下是我尝试遵循的几件事:1.2
您似乎不需要知道确切的.so文件,但需要知道库名称
我用过:
System.loadLibrary("GLU"); System.loadLibrary("GL"); System.loadLibrary("glut");
它起到了的作用
您可以查看使用Panama为Java启用OpenGL的Panama GL项目。你可能可以在那里找到一些3D渲染和Panama配置的食谱(问题板提供了一种问答,跟踪以前的硬错误解决方案(。