Pregunta

Me han estado ocupados creando una envoltura alrededor de JNA x264.dll. Tengo la siguiente clase para mi x264_param_t:

http://pastebin.com/Mh4JkVpP

Sin embargo, cuando intento inicializar mi x264_param_t de esa manera

x264_param_t param_t = new x264_param_t;

Me sale el siguiente error:

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 comento hacia fuera la VUI en él es constructor de la clase padre, la creación de instancias está bien. Me pregunto qué es diferente con exactamente esta estructura anidada, ya que hay otros 2 (es decir, Rc y Analizar) que están anidados de la misma manera. De alguna manera, sin embargo, JNA no es capaz de encontrar el tamaño requerido para Vui. Cualquier punteros?

Editar: Parece que todas las otras estructuras anidadas (analizar y RC) tampoco se inicializan. Me pregunto por qué?

¿Fue útil?

Solución

En lugar de comentar a cabo Vui, reemplazarlo con un puntero y comprobar si se llenan las otras dos estructuras.

Estas estructuras se definen como estructuras internas dentro de la struct x264_param_t, tal vez JNA tiene problemas con él. Echar un vistazo más de cerca a la salida de x264_param_t.toString (), a medida que imprime desplazamientos calculados de memoria.

Espero que encontrar mejores respuestas a la lista JNA correo

Editar Un truco sucio para resolver el problema:. Utilizar una matriz de enteros o simplemente volcar todas las variables de la estructura interior en lugar de utilizar una clase separada

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top