【请教】关于JNI中一个类型转换的问题
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*有什么区别呢
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*有什么区别呢
...全文
相关推荐
JNI处理hashmap,string等对象的操作
总的来说,JNI提供了一种强大但复杂的机制,使得Java代码可以利用本地代码的能力。然而,由于其涉及到多层抽象的交互,因此需要谨慎处理内存管理和类型转换,以避免潜在的问题和错误。
JNI类型传递
通过熟练掌握这些技巧,开发者可以充分利用JNI的强大功能,同时避免潜在的问题和陷阱。在实际开发中,应始终考虑性能和可维护性,以实现高效、可靠的代码。
JNI开发步骤
**创建JNI头文件** - 使用`javah`工具自动生成一个C/C++头文件,该文件包含了所有`native`方法的声明。
Java技术(JNI)实践
**同步问题**:Java对象在JNI中操作时,要注意同步问题,避免并发访问导致的数据不一致。通过这个"JNI调用实例",我们可以学习如何创建一个简单的JNI应用,从定义本地方法到编写和加载本地库。
java 的jni本地调用简单实例
这可以通过Java的`javah`工具完成,命令行执行`javah -jni Demo`,会生成一个包含JNI函数原型的C/C++头文件。


