有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c如何在SWIG生成的Java绑定中转换为SWIGTYPE_p_void类型?

我正在为C库开发一些SWIG生成的Java绑定。该库包含采用void *类型参数的函数。在C端,它们通常作为指向类型为floatint转换为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传递任意类型的数组。注意argvconst void *而不是void *


共 (0) 个答案