Я был занят созданием JNA-обертки вокруг x264.dll. У меня есть следующий класс для моего x264_param_t:x264 encoder with JNA
Однако, когда я пытаюсь инициализировать мой x264_param_t как тот
x264_param_t param_t = new x264_param_t;
я получаю следующее сообщение об ошибке:
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)
Если Я комментирую Vui в его конструкторе родительского класса, создание экземпляра в порядке. Интересно, чем отличается ТОЧНО эта вложенная структура, так как есть 2 других (а именно Rc и Analyze), которые вложены таким же образом. Так или иначе, JNA не может найти необходимый размер для Vui. Любые указатели?
Редактировать: Кажется, что все другие вложенные структуры (анализ и rc) также не были инициализированы. Интересно, почему?
Почему вы не рассматриваете JNI? Вы можете ознакомиться с моим руководством [здесь] (http://livertmpjavapublisher.blogspot.com/2014/05/jni-for-x264-encoder.html). –