Question

J'ai été occupé à créer une enveloppe autour de la JNA x264.dll. J'ai la classe suivante pour mon x264_param_t:

http://pastebin.com/Mh4JkVpP

Cependant, lorsque je tente d'initialiser mon x264_param_t comme ça

x264_param_t param_t = new x264_param_t;

je reçois l'erreur suivante:

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)

Si je commente le Vui dans son constructeur de la classe parent, l'instanciation est ok. Je me demande ce qui est différent avec cette EXACTEMENT structure imbriquée, comme il y a 2 autres (à savoir Rc et analyser) qui sont imbriqués de la même manière. D'une certaine manière, cependant, la JNA n'est pas en mesure de trouver la taille requise pour Vui. Tous les pointeurs?

Edit: Il semble que tous les autres struct imbriquées (analyser et rc) ont également été pas initialisés. Je me demande pourquoi?

Était-ce utile?

La solution

Au lieu de commenter sur Vui, le remplacer par un pointeur et vérifier si les deux autres structures sont remplies.

Ces structures sont définies comme des structures internes au sein de la struct x264_param_t, peut-être la JNA a des problèmes avec elle. Jetez un oeil de plus près la sortie de x264_param_t.toString (), car elle imprime des décalages de mémoire calculés.

J'espère que vous trouverez de meilleures réponses à la liste de diffusion

EDIT Un hack sale pour résoudre le problème. Utiliser un tableau de ints ou vider simplement toutes les variables de la structure intérieure au lieu d'utiliser une classe séparée

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top