我一直在使用JOGL库为图形编写游戏,当我导出这个游戏时,它只在我的机器上工作。我的处理器是Windows 7上3.2 GHz的AMD Phenom II X4 840处理器。当我导出游戏并使用CMD运行时,游戏运行正常并且没有错误。
然而,当在我的朋友计算机上运行时,我得到一个不满意的链接错误。他的电脑配有AMD A6-4400M APU,他正在运行Windows 8。
错误消息似乎很模糊,我无法解决问题。
Exception in thread "main" java.lang.UnsatisfiedLinkError:jogamp.opengl.windows.wgl.WGL.dispatch_wglGetProcAddress0(Ljava/lang/String;J)J
at jogamp.opengl.windows.wgl.WGL.dispatch_wglGetProcAddress0(Native Method)
at jogamp.opengl.windows.wgl.WGL.wglGetProcAddress(WGL.java:276)
at jogamp.opengl.windows.wgl.WindowsWGLDynamicLibraryBundleInfo.toolGetProcAddress(WindowsWGLDynamicLibrar yBundleInfo.java:57)
at com.jogamp.common.os.DynamicLibraryBundle.toolDynamicLookupFunction(DynamicLibraryBundle.java:341)
at com.jogamp.common.os.DynamicLibraryBundle.dynamicLookupFunction(DynamicLibraryBundle.java:369)
at com.jogamp.gluegen.runtime.opengl.GLProcAddressResolver.resolve(GLProcAddressResolver.java:54)
at com.jogamp.gluegen.runtime.ProcAddressTable.setEntry(ProcAddressTable.java:177)
at com.jogamp.gluegen.runtime.ProcAddressTable.reset(ProcAddressTable.java:145)
at jogamp.opengl.windows.wgl.WindowsWGLDrawableFactory$1.run(WindowsWGLDrawableFactory.java:100)
at jogamp.opengl.windows.wgl.WindowsWGLDrawableFactory$1.run(WindowsWGLDrawableFactory.java:93)
at java.security.AccessController.doPrivileged(Native Method)
at jogamp.opengl.windows.wgl.WindowsWGLDrawableFactory.<init>(WindowsWGLDrawableFactory.java:93)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.jogamp.common.util.ReflectionUtil.createInstance(ReflectionUtil.java:171)
at com.jogamp.common.util.ReflectionUtil.createInstance(ReflectionUtil.java:193)
at com.jogamp.common.util.ReflectionUtil.createInstance(ReflectionUtil.java:213)
at com.jogamp.common.util.ReflectionUtil.createInstance(ReflectionUtil.java:235)
at javax.media.opengl.GLDrawableFactory.initSingletonImpl(GLDrawableFactory.java:166)
at javax.media.opengl.GLDrawableFactory.initSingleton(GLDrawableFactory.java:129)
at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1573)
at javax.media.opengl.GLProfile.access$100(GLProfile.java:76)
at javax.media.opengl.GLProfile$1.run(GLProfile.java:155)
at java.security.AccessController.doPrivileged(Native Method)
at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:123)
at javax.media.opengl.GLProfile.getDefaultDevice(GLProfile.java:1837)
at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:337)
at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:291)
at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:282)
at main.Main.<init>(Main.java:73)
at main.Main.main(Main.java:94)
我的代码73和94中的行是:
73:canvas = new GLJPanel();
94:final Main main = new Main(); //When I initialise the main class
我导出时的布局如下:
在jar文件Q.jar中,我拥有所有类型系统的所有.dll。
如果您需要我的主要课程中的更多代码,我可以将其发布,否则放在这里太长了。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
你必须遵循this rule以允许GlueGen在制作胖JAR时找到本机库,否则它将不知道在哪个目录中查看它们,它不会提取它们,它们赢了“加载,你会得到一个不满意的链接错误。我建议你将来在official forum发布有关JOGL的技术问题,因为只有极少数JogAmp贡献者和维护者来到这里。
编辑:从不将本机库或JAR直接放入JVM中,以避免在运行applet和应用程序时发生冲突。