Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JNA将16位字符数组转换为8位字符数组并发送到c代码?_Java_C_Arrays_Types_Jna - Fatal编程技术网

Java 如何使用JNA将16位字符数组转换为8位字符数组并发送到c代码?

Java 如何使用JNA将16位字符数组转换为8位字符数组并发送到c代码?,java,c,arrays,types,jna,Java,C,Arrays,Types,Jna,我的c代码中有一个函数,其定义如下: void myfunct(double *xx, double *yy, double *si, double *ded, double *limit, double *al, double *bl, double *cl, int ndat, const char *path, int plenght, int error,int pgamodell,int converter, double backnoise); 当我在gcc中执行这个c程序时,它会

我的c代码中有一个函数,其定义如下:

void myfunct(double *xx, double *yy, double *si, double *ded, double *limit, double *al, double *bl, double *cl, int ndat, const char *path, int plenght, int error,int pgamodell,int converter, double backnoise);
当我在gcc中执行这个c程序时,它会执行并提供所需的输出。(工作正常!)

现在,我的任务是在java中使用这个c代码,因此我使用JNA。但是这个函数的路径参数有问题。在java方面,我以以下方式发送此参数:

String p = "E:/Development/dir/";
char[] path = p.toCharArray();

// and sending this path in the function call
但是在c程序上,我调试过,发现它只获得一个字符的路径,即“path=e”

我猜原因是java中的字符数组是16位的,而c中是8位的


请帮助我解决这个问题,因为我是JNA的新手,提前感谢您的时间

如果您的本机签名需要
const char*
,那么当您传递Java字符串时,JNA将自动工作。不需要转换

在内部,JNA将创建一个临时缓冲区(在调用期间),并将Java字符串编码为以NUL结尾的本机字节数组(默认为utf8编码,但可以通过设置系统属性
JNA.encoding
)进行修改)。

此代码片段有帮助吗?