c如何在SWIG生成的Java绑定中转换为SWIGTYPE_p_void类型?
我正在为C库开发一些SWIG生成的Java绑定。该库包含采用void *
类型参数的函数。在C端,它们通常作为指向类型为float
或int
转换为void *
的数组的指针传递。在生成的Java绑定中,这会导致采用类型为SWIGTYPE_p_void
的参数的方法
在Java绑定中构造一个float/int数组的最佳方法是什么,这样就可以将它们作为类型SWIGTYPE_p_void
传递给这些方法
目前,我正在我的示例中定义一个助手函数。我的文件:
void *floata_to_voidp(float f[])
{
return (void *)f;
}
然后在Java端执行类似的操作:
float foo[] = new float[2];
SWIGTYPE_p_void av = null;
// do something with foo
av = example.floata_to_voidp(foo);
example.myfunction(av);
这看起来相当难看,尤其是我还需要在我的SWIG接口文件中为我想要支持的每个类型转换提供一个inta_to_voidp()
等
有没有一种方法可以在不使用辅助函数的情况下实现这一点,并且在Java端使用更少的额外代码来转换数据类型
更新(17/6/12):为这个问题提供更多细节:我试图做的是获取一组C函数,带有原型int foo(const float *data, int N, const void *argv, float *result)
,并将它们映射到Java端的方法,其中可以作为argv
传递任意类型的数组。注意argv
是const void *
而不是void *
共 (0) 个答案