jna二级指针的引用该怎么获取

universemessage 2018-03-06 04:06:19
C函数原型为:extern "C" void __declspec(dllexport) Re2dArr(double **& val);
实现代码:
void Re2dArr(double **& val)
{
double a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
double ** arr = new double*[3];
for(int i = 0;i<3;i++)
{
arr[i] = new double[4];
}
for(int j = 0; j <3;j++)
{
for(int k = 0; k < 4; k++)
{
arr[j][k] = a[j][k]
}
}
val = arr;
for(int iP= 0;iP<3;iP++)
delete[]arr[iP];
delete[] arr;
}

大家好,以上是c函数,我想用jna调用这个方法,获取这个二维数组,jna代码搞了半天不知怎么写,请求帮助!!!!
...全文
1114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
universemessage 2018-03-06
  • 打赏
  • 举报
回复
如果是c函数的参数是*&的用PointerByReference就行了,**&就不知道怎么写了,求帮助呀!!!
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
引用 5 楼 universemessage 的回复:
[quote=引用 4 楼 xiongdejun 的回复:] [quote=引用 3 楼 universemessage 的回复:] [quote=引用 1 楼 xiongdejun 的回复:] 首先c语言我不是很懂。但是用到jna。就应该是调用dll函数了。语言上有些还是可以看得懂的,看你这段c语言里根本就没有返回这个二维数组,你jna怎么可能取的到呢? 所以呢。要么写一个返回二维数组的方法,要么就直接在这个方法里把这个二维数组返回出去。调用jna的时候方法的返回值就用二维数组来接受就可以了
val = arr;已经返回了; [/quote] 类型不是void吗?要是jna方面我可以帮你解决,但是c语言这边有心无力啊[/quote] 我需要用jna调用别人封装的dll,函数返回二维数组参数就是**&的形式,我就不知道该怎么写。 [/quote] jna调用你只需要知道他的方法名 返回参数类型 和参数就可以了啊
universemessage 2018-03-06
  • 打赏
  • 举报
回复
引用 4 楼 xiongdejun 的回复:
[quote=引用 3 楼 universemessage 的回复:] [quote=引用 1 楼 xiongdejun 的回复:] 首先c语言我不是很懂。但是用到jna。就应该是调用dll函数了。语言上有些还是可以看得懂的,看你这段c语言里根本就没有返回这个二维数组,你jna怎么可能取的到呢? 所以呢。要么写一个返回二维数组的方法,要么就直接在这个方法里把这个二维数组返回出去。调用jna的时候方法的返回值就用二维数组来接受就可以了
val = arr;已经返回了; [/quote] 类型不是void吗?要是jna方面我可以帮你解决,但是c语言这边有心无力啊[/quote] 我需要用jna调用别人封装的dll,函数返回二维数组参数就是**&的形式,我就不知道该怎么写。
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
引用 3 楼 universemessage 的回复:
[quote=引用 1 楼 xiongdejun 的回复:] 首先c语言我不是很懂。但是用到jna。就应该是调用dll函数了。语言上有些还是可以看得懂的,看你这段c语言里根本就没有返回这个二维数组,你jna怎么可能取的到呢? 所以呢。要么写一个返回二维数组的方法,要么就直接在这个方法里把这个二维数组返回出去。调用jna的时候方法的返回值就用二维数组来接受就可以了
val = arr;已经返回了; [/quote] 类型不是void吗?要是jna方面我可以帮你解决,但是c语言这边有心无力啊
universemessage 2018-03-06
  • 打赏
  • 举报
回复
引用 1 楼 xiongdejun 的回复:
首先c语言我不是很懂。但是用到jna。就应该是调用dll函数了。语言上有些还是可以看得懂的,看你这段c语言里根本就没有返回这个二维数组,你jna怎么可能取的到呢? 所以呢。要么写一个返回二维数组的方法,要么就直接在这个方法里把这个二维数组返回出去。调用jna的时候方法的返回值就用二维数组来接受就可以了
val = arr;已经返回了;
universemessage 2018-03-06
  • 打赏
  • 举报
回复
代码 val = arr;已经返回了。
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
首先c语言我不是很懂。但是用到jna。就应该是调用dll函数了。语言上有些还是可以看得懂的,看你这段c语言里根本就没有返回这个二维数组,你jna怎么可能取的到呢? 所以呢。要么写一个返回二维数组的方法,要么就直接在这个方法里把这个二维数组返回出去。调用jna的时候方法的返回值就用二维数组来接受就可以了

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧