gpt4 book ai didi

java - JNA在windows平台上映射LPCSTR

转载 作者:行者123 更新时间:2023-11-30 05:08:48 25 4
gpt4 key购买 nike

我正在使用 JNA 为 C/C++ 调用一个 DLL api。DLL中的函数API是短DKT_init(LPCSTR name)。我将相应的java方法设置为public Short DKT_init(String name);但是当我调用它时,DLL API 返回参数错误。我想知道如何在 JNA 中映射 LPCSTR?因为 LPCSTR 是 cons char * 而 String 是 char *。

最佳答案

字符串是 LPCSTR 的适当映射。 JNA 将使用默认平台编码将修改后的 UTF16 字符转换为以 NUL 结尾的字节缓冲区。

您可以尝试传入显式字节数组(使用上面建议的替代方法映射),这将消除潜在的错误编码问题,例如

byte[] arg = { (byte)'f', (byte)'o', (byte)'o', (byte)0 };

您可以通过设置系统属性“jna.encoding”来更改使用的编码。

您还应该消除“LPCSTR”实际上是错误类型的可能性;如果函数需要一个可以写入的缓冲区,则 String 将不起作用,如果它实际上是 LPTCSTR 并且您使用的是 UNICODE,那么您需要传递一个 WString。

关于java - JNA在windows平台上映射LPCSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203807/

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