Frage

Ich habe damit beschäftigt gewesen, einen JNA Wrapper um x264.dll zu schaffen. Ich habe die folgende Klasse für meine x264_param_t:

http://pastebin.com/Mh4JkVpP

Allerdings, wenn ich versuche, meinen x264_param_t so zu initialisieren

x264_param_t param_t = new x264_param_t;

ich die folgende Fehlermeldung erhalten:

Exception in thread "main" java.lang.IllegalArgumentException: Can't determine size of nested structure: Can't instantiate class anotherReversed.x264_param_t$Vui (java.lang.InstantiationException: anotherReversed.x264_param_t$Vui)
        at com.sun.jna.Structure.calculateSize(Structure.java:790)
        at com.sun.jna.Structure.allocateMemory(Structure.java:287)
        at com.sun.jna.Structure.<init>(Structure.java:177)
        at com.sun.jna.Structure.<init>(Structure.java:167)
        at com.sun.jna.Structure.<init>(Structure.java:163)
        at com.sun.jna.Structure.<init>(Structure.java:154)
        at anotherReversed.x264_param_t.<init>(x264_param_t.java:7)

Wenn ich den Vui auf Kommentar in seinem übergeordneten Klasse Konstruktor ist die Instanziierung ok. Ich frage mich, was mit genau dieser verschachtelten Struktur unterschiedlich ist, da es zwei andere (nämlich Rc und Analyse), die auf die gleiche Art und Weise verschachtelt sind. Irgendwie aber ist JNA nicht in der Lage, die erforderliche Größe für Vui zu finden. Alle Zeiger?

Edit: Es scheint, dass alle anderen verschachtelten Strukturen (analysieren und rc) wurden ebenfalls nicht initialisiert. Ich frage mich, warum?

War es hilfreich?

Lösung

Statt aus Vui zu kommentieren, ersetzen Sie es mit einem Zeiger und prüfen, ob die beiden anderen Strukturen gefüllt sind.

Diese Strukturen sind definiert als innere Strukturen innerhalb der x264_param_t Struktur, vielleicht hat JNA Probleme mit ihm. Nehmen Sie einen näheren Blick auf die Ausgabe von x264_param_t.toString (), wie es druckt berechnet Speicher-Offsets.

Ich hoffe, dass Sie bessere Antworten auf die jna finden Mailingliste

Bearbeiten Ein schmutziger Hack das Problem zu lösen. Ein Array von ints oder einfach nur alle Variablen von der inneren Struktur Dump stattdessen eine separate Klasse von mit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top