首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用JNA分配字节数组

用JNA分配字节数组
EN

Stack Overflow用户
提问于 2010-12-11 02:07:48
回答 1查看 1.4K关注 0票数 0

我正在尝试开发一个函数来填充作为实际参数传递的字节数组。我正在学习JNA文档的例子,但它不起作用。文件上说:

代码语言:javascript
复制
// Original C declaration allocate_buffer <br>
void (char ** bufp, int * lenp);

// Equivalent JNA mapping
void allocate_buffer (PointerByReference bufp, IntByReference lenp);

// Usage
PointerByReference PointerByReference pref = new ();
IntByReference IntByReference iref = new ();
lib.allocate_buffer (pref, iref);
Pref.getValue Pointer p = ();
byte [] buffer = p.getByteArray (0, iref.getValue ());

我在C中的功能是:

代码语言:javascript
复制
__declspec (dllexport) void allocate_buffer (char ** bufp, int * lenp)
{
    char array [4];

    array [0] = 0;
    array [2] = 1;
    array [3] = 2;
    array [4] = 3;

    * bufp = array;
    * lenp = 4;
}

但是,当打印数组值时,结果是:0 20 48 2

如何正确实现allocate_buffer函数?或者问题在Java代码中?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2010-12-11 14:58:06

解决:正确的C函数是:

__declspec(dllexport) void allocate_buffer(未签名字符*bufp,int lenp)

{

代码语言:javascript
复制
    unsigned char *array = (unsigned char *)malloc(4*sizeof(unsigned char));

    array[0] = 0;
    array[1] = 1;
    array[2] = 2;
    array[3] = 3;

    *bufp = array;
    *lenp = 4;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4414809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档