我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

C/C++ code
 
?
1
int retrieve(int scanno,void* buf);


在C中是通过先定义一个结构体再调用这个函数的:

C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
#define    COUNT_DIMENSION_MAX 256   
typedef struct tagVECTOR_st    {               
    int    dimension;                       
    double    vector[COUNT_DIMENSION_MAX];   
} VECTOR_st;
struct tagSample_st {
    int        ID;
    VECTOR_st    Vec;    //
} rec;
retrieveall(scanno,&rec);


请问各位大牛,这个retrieve函数的参数void* buf在C#中应该转换成什么?C#中并不能定义void*,我查找过一些资料,貌似说是转换成IntPtr,

C# code
 
?
1
public static extern int retrieveall(int scanno, IntPtr buf);


但是在C#中调用的时候应该传递什么样的参数给buf呢?C#中又不能写成&rec这种形式。希望大家帮忙解答!谢谢各位!

posted @ 2016-03-08 15:53  Mr▪King  阅读(511)  评论(0编辑  收藏  举报