有一个C++中编写的动态库,其中的一个库函数如下:
   int load_tool(int nr,char* device,char* adr_table)
结构定义:
#pragma pack(1)
struct {
unsigned char adr; /* station address default 2 */
unsigned char segmentid; /* segment id default 0 */
unsigned char slotno; /* slot no default 2 */
unsigned char rackno; /* rack no default 0 */
} adr_table[5];
#pragma pack()
  实际使用时,参数adr_table指向adr_table结构数组,请问在C#中如何调用load_tool

解决方案 »

  1.   

    上面的问题已摸索出,最后的一个参数可使用byte[,]即解决,下面又来了一个问题。
    有一个动态库函数,声明如下:
      int mix_read (char* data, void* buffer);
    在C++中调用该函数的方法如下:
    #pragma pack(1)
    typedef struct {
    char typ;
    char size;
    unsigned short dbno;
    unsigned short no;
    } data_type;
    data_type data[10];
    #pragma pack()
    char buffer[100];
    char e,a;
    int d;
    int error;
    :
    :
    data[0].typ = 'e';
    data[0].size= 'b';
    data[0].no = 0;
    data[1].typ = 'a';
    data[1].size= 'b';
    data[1].no = 3;
    data[2].typ = 'd';
    data[2].size= 'w';
    data[2].dbno= 10;
    data[2].no = 5;
    data[3].typ = 0; /* endekennung der liste */
    error = mix_read((char*)data,buffer);
    e = buffer[0];
    a = buffer[1];
    d = ((int)buffer[2] << 8) | (int)buffer[3];
    :
    :
    请问在C#中如何调用mix_read()函数,问题时如何传递参数,才能与上面的调用等效?
      

  2.   

    int mix_read (stringBuilder data, stringBuilder buffer);