在使用JNA从C调用Java代码时,我有以下错误:
Native Exception in org.InvokerPackageCallback@3ba987b8
java.lang.Error: Invalid memory access
at com.sun.jna.Native.getStringBytes(Native Method)
at com.sun.jna.Native.getString(Native.java:2248)
at com.sun.jna.Pointer.getString(Pointer.java:681)
at com.sun.jna.Str
我想要一些帮助,在抛出指向C结构指向jna结构的指针。我使用jna从dll接收回调函数,该函数有一个参数,即指向C结构的指针,当i试图将指针转换到jna结构时,就会得到错误的结构值。
这就是C结构:
typedef struct
{
int x;
int y;
}Point;
Point *gpt;
typedef struct
{
int x;
int y;
Point pt1;
}Point2;
Point2 *gpt2;
这是C中的回调函数,它的指针(void *params)指向Point2 sctruct:
void __stdcall PointCa
我正在尝试使用创建到FUSE库的绑定,但是我在路上遇到了一个障碍。我已经尽量减少了代码,使它在这里可消化。
FUSE库附带了一些用C编写的示例文件系统,其中最简单的是hello.c。以下是其代码的最小化版本,只需在文件系统函数中打印几个输出:
hello.c
/*
FUSE: Filesystem in Userspace
Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
This program can be distributed under the terms of the GNU GPL.
我创建了一个Java代码,试图访问在LoadProject中定义的类IProjectFactory的方法IProjectFactory。DLL文件的描述是: IProjectFactory用于将项目文件加载到内存中。IProjectFactory是myAPI.dll程序集中的静态类。它公开LoadProject方法,该方法接受包含要加载文件的路径的字符串,并返回对结果IProject的引用。使用IProject接口,您可以以各种方式操作加载的项目。
import com.sun.jna.Library;
import com.sun.jna.Native;
public class MyCl
我试图在Java中使用C++ API。这个API使用回调来处理会话事件。
我在如何向JNA注册回调方面找到的唯一资源是,它处理C回调,我不知道如何将它扩展到C++非静态回调。
编辑:我刚找到,我认为“重新访问回调”章节可能会有所帮助。
回调的所有函数指针都存储在以下sp_session_callbacks结构中:
/**
* Session callbacks
*
* Registered when you create a session.
* If some callbacks should not be of interest, set them to NULL.
*/
typ