java - 如何在 JNA 中调用带有前导下划线和尾随 @ 的方法

标签 java jna

我必须调用 dll 中的方法,但它们的名称类似于使用 Java Native Access 的 _setParameterX@12 和 _getParameterX@20。如何正确使用 FunctionMapper 或 StdCallFunctionMapper?我如何调用这些函数? jna 文档对我来说有点模糊。

最佳答案

这些函数使用 stdcall 调用约定。后缀表示堆栈上传入参数的大小。

您应该使用 StdCallFunctionMapper 自动生成适当的映射。创建类似于 W32API options 中使用的选项(那里的函数映射器会自动为 W32 API 函数选择 -W 或 -A 后缀)。将您的新选项映射传递给您对 Native.loadLibrary 的调用.

此外,确保您实现了 StdCallLibrary 接口(interface),以便在调用函数时使用适当的调用约定。

关于java - 如何在 JNA 中调用带有前导下划线和尾随 @ 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578457/

相关文章:

java - C 等效 Java JNA 代码示例

java - 我如何解析 Ping 请求(字符串)的 Ping 时间(整数)?

Java EE 8 : No transaction in asynchronous observer (CDI 2. 0)

java - 为什么SWT List填充全复合?

java - JNA:如何定义具有自定义位大小字段的结构?

java - 共享库分配的 JNA 空闲内存

java - 当 sizeof(long) 为 4 时,为什么需要为 JNA 指针保留超过 4 个字节才能接收 long?

java - 为什么扫描仪不会在末尾没有/的情况下获取我的年份变量?

java - 无法使用 Jetty 服务器线程池最大大小限制并发请求,为什么?

java - JNA/BridJ 等中的段错误