gpt4 book ai didi

java - Windows Mobile native 代码 - jstring 到 LPCTSTR

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:17 26 4
gpt4 key购买 nike

我有一个 Java 应用程序需要与 Windows Mobile 设备上的相机交互。我已经编写了 Java 代码和 native 代码,并且一切正常。我现在遇到的问题是我想开始将变量从 Java 传递到 native 代码,例如用于照片的目录和文件名。

native 代码使用 SHCAMERACAPTURE 对象与相机交互,它期望使用 LPCTSTR 指定目录和文件名。传入的字符串是一个 jstring,我可以通过调用得到一个 const char *:

const char *strDir=(jEnv)->GetStringUTFChars(dirName, 0);

但我不确定如何将它传递给 SHCAMERACAPTURE 对象,因为它无法将 const char * 转换为 LPCTSTR。我尝试了一个 cast (LPCTSTR)strDir 并编译了它,但它运行时出现错误(它无法创建文件)。

我是一名 Java 开发人员,对 C++ 等还很陌生,所以我真的不太确定我需要做什么才能让我的字符串进入 native 调用。有什么想法吗?

最佳答案

我认为您应该尝试使用 GetStringChars() 而不是 GetStringUTFChars()根据this page它返回 Unicode 字符串。

WindowsCE 和 Windows mobile 只使用 UNICODE 所以 LPCTSTR实际上是 LPCWSTR (Long Pointer to Const WideChar String)

SHCAMERACAPTURE shcc;
ZeroMemory(&shcc, sizeof(shcc));
shcc.cbSize = sizeof(shcc);
shcc.pszInitialDir = (TCHAR*)(jEnv)->GetStringChars(dirName, 0 );
shcc.pszDefaultFileName = (TCHAR*)(jEnv)->GetStringChars(defFileName, 0 );

我假设您想提供路径和文件名。这是改编自 this MS page

关于java - Windows Mobile native 代码 - jstring 到 LPCTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com