I have been writing a game using JOGL libraries for graphics and when I have been exporting this game it has only been working on my machine. My processor is an AMD Phenom II X4 840 Processor at 3.2 GHz on Windows 7. When I export the game and run using CMD the game works fine and there are no errors.
However, when running on my friends computer I get an unsatisfied link error. His computer has a AMD A6-4400M APU and he is running Windows 8.
The error message seems to be very vague and I havn't been able to adress the problem.
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)
The lines in my code 73 and 94 are:
73: canvas = new GLJPanel();
94: final Main main = new Main(); //When I initialise the main class
My layout when I export it goes like this:
Inside the jar file Q.jar I have all of the .dll's for all of the types of systems.
If you need more code from my main class, I can post it up, it is too long otherwise to put up here.
Any help would be highly appreciated.
You have to follow this rule to allow GlueGen to find the native libraries when making a fat JAR, otherwise it won't know in which directories to look at them, it won't extract them, they won't be loaded and you'll get an unsatisfied link error. I advise you to post your technical questions about JOGL on its official forum in the future as only a very few JogAmp contributers and maintainers come here.
Edit.: Never put the native libraries or the JARs directly into the JVM in order to avoid conflicts when running applets and applications.