当前位置:编程学习 > JAVA >>

java jna 模拟结构体指针,传递参数问题

情况是这样:我用VC封装了一个动态库,例如别人提供的库叫a.dll,封装好后,叫b.dll,提供接口给外部使用,现在我想通过JAVA利用JNA技术模拟b.dll中的函数实现,(实现结构体,指针等的模拟),假设有如下结构体:
struct sm_data{
    unsigned char* pData1;
    unsigned char* pData2;
    unsigned BYTE* pData3;
}
在b.dll中有如下函数:
void testjna(sm_data* pkey){
     //////////////函数实现
}
利用JNA技术,在JAVA中模拟结构体如下:
public class sm_data extends Structure{
    String pData1;
    byte[] pData2;
    byte[] pData3;    //只是打个比方,并没有初始化大小
}
void testjna(sm_data.ByReference pkey);
那么,我通过在JAVA中对pData1,pData2,pData3赋初值,通过JNA模拟的结构体指针传递给动态库进行处理,那么JAVA中pData3这个byte[]数组,与BYTE* pData3对应(BYTE* 相当于unsigned char*),那么传递给动态库后,该怎么正确处理呢???也就是说,要使BYTE* pData3的数据就是byte[] pData3传过来的数据(因为在库内部,我并不知道具体实现细节,故库文件里肯定是以BYTE* pData3来进行处理的),我不知道我说明白了吗!!如果我没有表述清楚,请指出,不胜感激,求高人指教啊!!!!!!!!!!!!!!
--------------------编程问答-------------------- 。。。。。。路过,帮顶。 --------------------编程问答-------------------- 如果BYTE* 相当于unsigned char*,传入的时候是以二进制值为基础的,只要数据类型长度一致,就应该没问题
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,