weixin_42299852
2009-01-22 10:57
浏览 226
已采纳

java dll jni jnative相关问题

问个问题:

我要用java调用一个dll,使用JNI或者(JNative组件),但dll中有一个函数返回的是指针类型.vb中用lstrcpy(result, pointer) 就可以得到,
vc中 char* ret = 函数() 就可以得到,可我的java中怎么得到指针对应的值呢.....?????
JNative中只有jNative.getRetValAsInt() jNative.getRetVal()两个方法,一个返回String值,一个返回int值
[b]问题补充:[/b]
我不知道对于DLL的 [b]指针函数[/b] ,JNative在调用时是否能返回指针...
lewhwa 告诉我的方法"那就用JNative.getRetVal(),然后再用String.toCharArray()得到CharArray",,,可这个CharArray有什么用呢,能说详细一点吗?我要的是: [b]DLL中[i]指针函数[/i]返回的[color=red]指针[/color]对应的值![/b]
谢谢各位的帮助!!!
[b]问题补充:[/b]
指针对于的值就是String包含的内容,[b]如果是这样[/b]就比较好办!只是我调试的时候调用得到的String都是一个空串,不是我预期的结果,所以困惑.另外,查了一些资料发现[color=red]JNA(Java Native Access)[/color]对Dll调用好像处理得更完美一些....[color=red]?[/color]
"通过传入String的引用来获取函数处理的值" 这点我能够理解,只是我手头的dll是封装好了的没办法更改,现在就是要取其返回的指针值.
我再来试试看,...再次感谢感谢!

[b]问题补充:[/b]
给我email好不?或者我的QQ:1006570814

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • wwwghost 2009-01-23 23:28
    已采纳

    [quote]我不知道对于DLL的 指针函数 ,JNative在调用时是否能返回指针...
    lewhwa 告诉我的方法"那就用JNative.getRetVal(),然后再用String.toCharArray()得到CharArray",,,可这个CharArray有什么用呢,能说详细一点吗?我要的是: DLL中指针函数返回的指针对应的值! [/quote]
    其实,如果要得到指针对于的值就是String包含的内容。在C语言中返回的char *就是以\0结尾的字符串值。
    我上面所说的如果非要转换成char数组,将String进行转换即可!

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • ChocooM 2009-01-23 08:49

    你定义个char数组来获取指针对应的值

    评论
    解决 无用
    打赏 举报
  • wwwghost 2009-01-23 14:34

    [quote] JNative中只有jNative.getRetValAsInt() jNative.getRetVal()两个方法,一个返回String值,一个返回int值 [/quote]
    那就用JNative.getRetVal(),然后再用String.toCharArray()得到CharArray。

    评论
    解决 无用
    打赏 举报
  • wwwghost 2009-01-23 23:31

    PS:也可以通过传入String的引用来获取函数处理的值,不是通过返回参数的形式,这点对于多个返回参数来说特别有用!

    评论
    解决 无用
    打赏 举报
  • wwwghost 2009-01-24 01:07

    [quote]查了一些资料发现JNA(Java Native Access)对Dll调用好像处理得更完美一些....? [/quote]
    也许是吧,JNA是Sun主导的Open Source的。能不能将你的dll上传?

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题