c++封装动态库在java调用

hmilyzhen 2018-08-31 02:58:36
现准备封装一动态库在java平台调用。 最终返回为一个十六进制的字符串如68160103. 现在在java中调用为乱码字符 求专家指教。这样写对吗?

TEST_API char * Test()
{

char *pRet = new char[5];

pRet[0] = 0x68;
pRet[1] = 0x01;
pRet[2] = 0x03;
pRet[3] = 0x00;
pRet[4] = 0x01;
return pRet;
}
...全文
484 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2018-09-17
  • 打赏
  • 举报
回复
引用 5 楼 hmilyzhen 的回复:
[quote=引用 3 楼 boxmanstan 的回复:]
一楼的意思是分配内存在调用方做,避免内存泄露,保证代码可重用性。
这次要十个字节,下次需要二十个,不又得写一个函数吗,所以放到调用方


每个函数的字节数是固定长度的
java中我直接用string接收的 是不是不能这样接收?
  
private static String test(){

return jnaInterface.instanceDll.Test();

}
[/quote]

楼主问题解决了吗?
杀意已决 2018-08-31
  • 打赏
  • 举报
回复
引用 5 楼 hmilyzhen的回复:
[quote=引用 3 楼 boxmanstan 的回复:] 一楼的意思是分配内存在调用方做,避免内存泄露,保证代码可重用性。 这次要十个字节,下次需要二十个,不又得写一个函数吗,所以放到调用方
每个函数的字节数是固定长度的 java中我直接用string接收的 是不是不能这样接收?
  
private static  String  test(){
       
    	return jnaInterface.instanceDll.Test();

    }
[/quote] 你可以试一下,在java侧申请内存空间,在c++侧处理后返回一个指针,用string接收后看看结果
杀意已决 2018-08-31
  • 打赏
  • 举报
回复
引用 5 楼 hmilyzhen的回复:
[quote=引用 3 楼 boxmanstan 的回复:] 一楼的意思是分配内存在调用方做,避免内存泄露,保证代码可重用性。 这次要十个字节,下次需要二十个,不又得写一个函数吗,所以放到调用方
每个函数的字节数是固定长度的 java中我直接用string接收的 是不是不能这样接收?
  
private static  String  test(){
       
    	return jnaInterface.instanceDll.Test();

    }
[/quote] 这个我不清楚,c++也有string
hmilyzhen 2018-08-31
  • 打赏
  • 举报
回复
引用 3 楼 boxmanstan 的回复:
一楼的意思是分配内存在调用方做,避免内存泄露,保证代码可重用性。 这次要十个字节,下次需要二十个,不又得写一个函数吗,所以放到调用方
每个函数的字节数是固定长度的 java中我直接用string接收的 是不是不能这样接收?
  
private static  String  test(){
       
    	return jnaInterface.instanceDll.Test();

    }
十八道胡同 2018-08-31
  • 打赏
  • 举报
回复
应该是你的Test里面申请的内存在返回之后被释放了,所以你看到的时候乱码
杀意已决 2018-08-31
  • 打赏
  • 举报
回复
一楼的意思是分配内存在调用方做,避免内存泄露,保证代码可重用性。 这次要十个字节,下次需要二十个,不又得写一个函数吗,所以放到调用方
hmilyzhen 2018-08-31
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
应该在Java端分配内存,传一个指针(可以用数组)和数组大小给C++函数。可以使用JNA:https://github.com/java-native-access/jna
求指教 头一次用c++
  • 打赏
  • 举报
回复
应该在Java端分配内存,传一个指针(可以用数组)和数组大小给C++函数。可以使用JNA:https://github.com/java-native-access/jna

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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