繁体   English   中英

如何通过C ++通过JNI传递扩展ASCII字符

[英]how to pass Extended ASCII characters through JNI via C++

我正在尝试通过VC ++使用JNI并将类路径中的自定义目录作为UTF-8字符串传递-Djava.class.path = c:\\ myDir \\ my.jar

这很好用,我可以使用FindClass在jar中找到方法

但是,如果目录名称包含任何扩展的ASCII字符,则FindClass返回NoClassDefFound异常。 我猜这是因为JVM无法加载jar文件,并且在传递参数时做错了。

这是我的工作1)创建一个std :: wstring jarPath(L“ -Djava.class.path = C:\\ÆËñœ\\ my.jar”); 2)使用WideCharToMultiByte将wstring转换为CP_UTF8 3)将utf8String复制到optionString并调用JNI_CreateJavaJVM

我曾在调用JNI_CReateJavaJVM之前尝试将转换后的utf8打印到日志文件,它可以完美打印。

有人可以告诉我CP_UTF8(在Windows SDK WinN; sh中定义)是否不是JNI期望的? 我如何调试此问题,我们将不胜感激。

在此先感谢拉胡尔

文档建议选项字符串必须采用“默认平台编码”。 这可能意味着您需要使用CP_ACP。 如果您的字符无法用该编码表示,那么我不确定您可以做很多事情。

(该文件的简称可以使用吗?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM