一个vc的动态库,接口函数为
int test(char* buf,myst* s);
其中buf是一块比较大的内存区域,所以使用char*来传递该区域地址
myst是一个结构,传递的s是这个结构的数组,不定长,所以传递首地址请问这两种数据类型在delphi中怎么调用?

解决方案 »

  1.   

    两个参数都是指针的,第一个可以用PChar,第二个可以定义同样的结构或也使用PChar
      

  2.   

    myst是一个结构你也需要用RECORD来定义,注意字节对齐方式;
      

  3.   

    再问个比较菜的问题,这块内存区域是我用tmemorystream开的,怎么用pchar指向它?
    另外,定义了同够的结构,是可以直接传结构变量还是要传结构指针?
    问题在于这两个变量的内存空间都用delphi的程序来分配,再传到vc中使用,该怎么做?
    hehe
    比较菜,请耐心讲解
      

  4.   

    var
    fo:TMemoryStream;
    p:pchar;
    ...fo:=TMemoryStream.Create;
    fo.SetSize(bufSize);
    p:=fo.Memory;..
      

  5.   

    请指教,p:=fo.memory,这样得到的内存在别的线程中可操作么?tmemorystream没有对内存进行锁定吧?我传进去后还是报内存的非法操作...?
      

  6.   

    我试了两种方式,p:=fo.memory,或者直接传fo.memory^,都有问题。
    算了,这个帖子这么拖着也不是事,先结了吧。