代码之家  ›  专栏  ›  技术社区  ›  DaveJohnston

Windows Mobile本机代码-jString到lpctstr

  •  2
  • DaveJohnston  · 技术社区  · 14 年前

    我有一个Java应用程序,它需要与Windows移动设备上的相机进行交互。我已经编写了Java代码和本机代码,并且都很好。我现在的问题是,我想开始将变量从Java传递到本机代码,例如用于照片的目录和文件名。

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

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

    但我不知道如何把这个传给 摄像机捕捉 对象,因为它无法转换 常量字符 LPCTSTR . 我尝试了一个演员 (LPCTSTR)strDir 它编译了,但运行时出错(无法创建文件)。

    我是一个Java开发人员,对于C++等很新,所以我真的不太确定我需要做什么来把我的字符串放到本地调用中。有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   renick    14 年前

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

    WindowsCE和Windows Mobile仅使用Unicode,所以lpctstr 实际上是lpcwstr(指向const widechar字符串的长指针)

    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