我一直忙于围绕x264.dll创建一个JNA包装器。我的x264_param_t有以下课程:
http://pastebin.com/Mh4JkVpP
但是,当我尝试像这样初始化我的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,实例化就可以了。我想知道这个嵌套结构到底有什么不同,因为还有另外两个(即Rc和Analyse )是以相同的方式嵌套的。然而,无论如何,JNA无法为Vui找到所需的尺寸。有什么指示吗?
编辑:似乎所有其他嵌套结构(分析和rc )也没有初始化。我想知道为什么?
发布于 2011-01-19 17:36:30
与其注释掉Vui,不如用一个指针替换它,并检查其他两个结构是否已被填充。
这些结构被定义为x264_param_t结构中的内部结构,可能JNA存在问题。仔细看看x264_param_t.toString()的输出,因为它打印计算的内存偏移量。
我希望你能在jna 邮寄名单找到更好的答案
编辑解决了这个问题:使用一个ints数组,或者只是转储内部结构中的所有变量,而不是使用一个单独的类。
https://stackoverflow.com/questions/4737298
复制相似问题