我必须调用 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/