【请教】关于JNI中一个类型转换的问题

hlhua 2013-05-08 11:41:30
1.原始代码如下:
JNIEXPORT jint JNICALL Java_com_fujitsu_cbdt_debug_internal_strlen
(JNIEnv *env, jclass debugVM, jint lpszText)
{
return lstrlen(LPSTR)lpszText);
}

2.因为做unicode对应版本,将编译语言设置为Unicode后,
将return lstrlen(LPSTR)lpszText); 改为 return lstrlen(LPTSTR)lpszText);

然而像上面的这种该法就导致问题发生了,Java那边有时获取到的长度不准确

3.不知道有哪位大侠碰到过类似的问题啊?jint转换为char*,转换为TCHAR*有什么区别呢
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlhua 2013-05-08
  • 打赏
  • 举报
回复
引用 1 楼 bluewanderer 的回复:
个人建议还是不要依赖宽字符自适应。直接用lstrlenW和wchar_t *。 另外为什么不直接用C库的函数,而用Windows API? 其实你有很多办法检测这个问题,比如log,比如把lpszText内容保存到文件,或者最省事的是单步调试。
谢谢!使用自适应是因为为了适应两种版本。其实我们这次是在别人的基础上改代码,别人一开始就用的Windows API,所以我也就没改
bluewanderer 2013-05-08
  • 打赏
  • 举报
回复
个人建议还是不要依赖宽字符自适应。直接用lstrlenW和wchar_t *。 另外为什么不直接用C库的函数,而用Windows API? 其实你有很多办法检测这个问题,比如log,比如把lpszText内容保存到文件,或者最省事的是单步调试。
BadPattern 2013-05-08
  • 打赏
  • 举报
回复
为什么要用jint呢,使用jstring表示字符串不是更好。然后调用相应的jni函数转换成char *

64,642

社区成员

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

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