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相关