Probleme mit JOGL

TriipaxX

Grünschnabel
Hallo ihrs,

ich hab nen bescheidenes Prob mit JOGL.
Ich möchte mit JOGL Shader programmieren und hab mir von sun die neuste JOGL-Version gezogen ( JSR-231 beta 04 - April 20 2006 ) und dazu das Cg-Toolkit 1.3 von NVidia ( habs aber auch schon mit dem 1.4er probiert ).
Ich habe die jogl.jar in "[jdk-home]/jre/lib/ext" kopiert und die 3 native librarys (jogl.dll, jogl_awt.dll, jogl_cg.dll) in "[jdk-home]/jre/bin" kopiert. JDK-Version ist die neuste (jdk1.5.0_06).
Ich habe nun ein kleines Testprogramm schreiben wollen in dem ich einfach nur ein Quadrat und eine Lichtquelle habe und wollte nun ein Per-Pixel-Lightning zu schreiben. Die JOGL-Grundbefehle funktionieren, aber wenn man ich nun nen Cg-Context mit
Code:
Context = CgGL.cgCreateContext();
erstellen will, bekomme ich diese Fehlermeldung beim Start:
Code:
Exception in thread "Thread-2" javax.media.opengl.GLException: java.lang.UnsatisfiedLinkError: C:\Programme\Java\jdk1.5.0_06\jre\bin\jogl_cg.dll: Die angegebene Prozedur wurde nicht gefunden
        at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:266)
        at javax.media.opengl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas.java:256)
        at javax.media.opengl.GLCanvas.display(GLCanvas.java:130)
        at com.sun.opengl.util.Animator.display(Animator.java:144)
        at com.sun.opengl.util.Animator$MainLoop.run(Animator.java:181)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.UnsatisfiedLinkError: C:\Programme\Java\jdk1.5.0_06\jre\bin\jogl_cg.dll: Die angegebene Prozedur wurde nicht gefunden
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1668)
        at java.lang.Runtime.loadLibrary0(Runtime.java:822)
        at java.lang.System.loadLibrary(System.java:992)
        at com.sun.opengl.impl.NativeLibLoader$DefaultAction.loadLibrary(NativeLibLoader.java:78)
        at com.sun.opengl.impl.NativeLibLoader.loadLibrary(NativeLibLoader.java:101)
        at com.sun.opengl.impl.NativeLibLoader.access$100(NativeLibLoader.java:47)
        at com.sun.opengl.impl.NativeLibLoader$4.run(NativeLibLoader.java:151)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.opengl.impl.NativeLibLoader.loadCgImpl(NativeLibLoader.java:148)
        at com.sun.opengl.cg.CgGL.<clinit>(CgGL.java:5412)
        at jogltest.Test.init(Test.java:66)
        at com.sun.opengl.impl.GLDrawableHelper.init(GLDrawableHelper.java:72)
        at javax.media.opengl.GLCanvas$InitAction.run(GLCanvas.java:264)
        at com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:189)
        at javax.media.opengl.GLCanvas$DisplayOnEventDispatchThreadAction.run(GLCanvas.java:298)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Hat vielleicht einer ne Idee warum und was ich dagegen machen kann? :confused:

Vielen Dank im Vorraus....
 
Hallo!

Die angegebene Prozedur wurde nicht gefunden
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threadi
Ich vermute mal, dass die DLLs nicht zusammenpassen, bzw. JOGL eine andere Version der NVidia DLLs voraussetzt.

Weiterhin:
Kopiere die 3 Dlls besser nach Windows\System32 oder in das Verzeichnis aus dem deine Anwendung gestartet wird. Ausserdem solltest du das jogl Jar nicht ins lib/ext Verzeichnis legen, die dies sonst mit anderen Bibliotheken kollidieren oder ClassLoading Probleme verursachen kann. Besser du fuegst es dem Anwendungsclasspath hinzu. Also beim Start der Anwendung ueber java -cp c:/foo/bar/libs/jogl.jar de.tutorials.JoglExample. Oder wenn du eine IDE wie beispielsweise Eclipse verwendest dem Projekt Classpath.

Gruss Tom
 
Also das ganze als Separate Library in Netbeans einbinden hat schon mal meinen Fehler behoben....allerdings hab ich jetzt nen neuen.... -.-

Code:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
....

kopiere ich nun die dlls in "../system32" dann bekomme ich meinen alten Fehler wieder. Ganz schön kacke der mist. :P
Die DLL`s müssten eigentlich alle zusammen passen, habs nun mit Cg-Version 1.3, 1.4 und 1.5Beta1 probiert. Und es ändert sich rein gar nix an der Fehlermeldung.

Hast du noch eine andere Idee, ausser Windoof neu machen und hoffen?
 
Hallo!

Du koenntest in deiner Laufzeitkonfiguration den java.library.path auf den Speicherort der dlls setzen:

java -Djava.library.path=c:/jogl/libs ...

Gruss Tom
 
scheint nicht zu funktionieren....
1. krieg ich keine bestätigung nach eingabe der befehlszeile, nur wieder die auflistung welche argumente erlaubt sind....
und 2. es geht immer noch nicht.... :(
 
Hallo!

also laut deiner Angabe müsste das so gehen....
... hättest du die drei "." beachtet wüsstest du das da auch noch ein wenig mehr stehen muss... ;-)
java -cp .;c:/jogl/foo.jar;c:/jogl/bar.jar -Djava.library.path=c:/jogl/libs de.tutorials.JoglExample

Gruß Tom
 
Hallo!

Anstatt de.tutorials.JoglExample solltest du den voll qualifizierten Klassennamen deiner "main"-Class angeben.

Gruss Tom
 

Neue Beiträge

Zurück