当前位置: 代码迷 >> Java相关 >> java调用dll怎么办指针参数?char,int,float三种类型指针在java中怎么替代
  详细解决方案

java调用dll怎么办指针参数?char,int,float三种类型指针在java中怎么替代

热度:7170   发布时间:2013-02-25 21:43:39.0
java调用dll怎么处理指针参数?char,int,float三种类型指针在java中如何替代?
如题!
我需要在java里调用某个dll的函数,是别人封装好的,只提供给我接口了。但是我不知道应该以什么类型做参数传递。网上搜索说java中没有指针概念,每个对象都是一个指针,但是String int 和float都是基本类型吧?网上还说基本类型的话传递进去的是变量的副本,而不是地址。

函数原型:
char指针
参数p_id是输出参数,怎么才能让我的一个变量调用这个函数后改变其值呢?用什么类型呢?String ?
int _stdcall p_testCharP(char* p_id);

int指针
参数RCount是输出参数,通过调用方法改变变量值。
int _stdcall p_testIntP(int* RCount);

float指针
参数s是输出参数
int _stdcall p_testFloatP(float *s);

还有,const是不允许修改的常量,跟我没关系。那unsigned和不带unsigned的有啥区别?如果参数原型的参数前加了unsigned我又需要怎么传值? 

其实我想问的就是:动态链接库的函数在java中调用时的参数应该用什么类型变量代替?char指针int指针和float指针,外加unsigned修饰有注意点吗?
------最佳解决方案--------------------------------------------------------
引用:
那int跟float呢?还有我自己测试怎么没有改变值啊?就是在一个方法里改参,外面还是原来的值。

引用:

很多指针类型的都可以用byte类型的数组代替

int和float定义成相应的数组,数组长度为1,我觉得java在传参时如果是基本数据类型就是传的值,如果是对象就是传的地址,你如果传一个值过去,值是一个常量,那在dll方法里面它如何给一个常量赋值呢?所以我们要传一个地址过去,它就会改变那个地址所指向的值,我才可以得到改变的值。所以在传参时如果你要的参数是它要输出的,就用那个参数类型的数组,长度为1就可以,这是我前段时间研究JNA的一点心得,希望可以帮到你
------其他解决方案--------------------------------------------------------
看看这个就知道了:http://blog.csdn.net/chenshuang_com/article/details/7681670
------其他解决方案--------------------------------------------------------
很多指针类型的都可以用byte类型的数组代替
------其他解决方案--------------------------------------------------------
那int跟float呢?还有我自己测试怎么没有改变值啊?就是在一个方法里改参,外面还是原来的值。
引用:
很多指针类型的都可以用byte类型的数组代替

------其他解决方案--------------------------------------------------------
引用:
引用:
那int跟float呢?还有我自己测试怎么没有改变值啊?就是在一个方法里改参,外面还是原来的值。

引用:

很多指针类型的都可以用byte类型的数组代替

int和float定义成相应的数组,数组长度为1,我觉得java在传参时如果是基本数据类型就是传的值,如果是对象就是传的地址,你如果传一个值过去,值是一个常量,那在dll方法里面它如何……


好的,我试验一下,感谢您的回答!
  相关解决方案