Java JNA调用C++;具有LPCWSTR参数的函数 我已经做了一个C++ DLL,它带有一个函数,它使用Unicode字符串(LPCWSTR类型):

Java JNA调用C++;具有LPCWSTR参数的函数 我已经做了一个C++ DLL,它带有一个函数,它使用Unicode字符串(LPCWSTR类型):,java,c++,unicode,jna,Java,C++,Unicode,Jna,我的一位同事正试图通过JNA对此进行呼叫 使用字符串作为参数失败(调用C++函数,但参数无效) 使用WString也失败了 不幸的是,不要引用LPCWSTR类型 对此有什么想法吗?与LPCWSTR和LPWSTR相当的JNI是WString Java字符串映射到char*或LPSTR或LPCSTR,但我相信将使用UTF-8尾端编码,因此仍然可以传递完整的字符集。事实上,我的同事没有正确声明WString,它现在可以工作了。您介意回答这个问题以便正确关闭它吗?Java字符串可以映射到LPCWSTR或

我的一位同事正试图通过JNA对此进行呼叫

使用字符串作为参数失败(调用C++函数,但参数无效)

使用WString也失败了

不幸的是,不要引用LPCWSTR类型


对此有什么想法吗?

LPCWSTR
LPWSTR
相当的JNI是
WString


Java字符串映射到
char*
LPSTR
LPCSTR
,但我相信将使用UTF-8尾端编码,因此仍然可以传递完整的字符集。

事实上,我的同事没有正确声明WString,它现在可以工作了。您介意回答这个问题以便正确关闭它吗?Java字符串可以映射到
LPCWSTR
LPWSTR
;如果您了解W32 API映射是如何设置的,您可以看到这些MS库是如何实现的,这些MS库支持函数签名的ANSII和UNICODE变体。本机层需要指示是否将Java字符串视为
char*
wchar\t*
,而
WString
是最基本的方法。
extern "C" __declspec( dllexport ) HRESULT signFile(LPCWSTR fileName, LPCWSTR certSubject, LPCWSTR storeName);

HRESULT signFile(LPCWSTR fileName, LPCWSTR certSubject, LPCWSTR storeName)