不知道理C语言采用什么压栈格式,还是使用缺省的。
试着这样声明:
procedure FormularyEntry(InhosNo, BillNo, ErrorMsg: PChar); cdcel;

解决方案 »

  1.   

    DLL的输出函数一般用stdcall
    C的 char *对应delphi的Pointer,PChar等,也可以用array[0..n] of Char
      

  2.   

    To hellion(恶人):
    Pointer怎么用?应该用哪个比较好?
      

  3.   

    你必须说清楚函数的压栈方式。不说清楚,谁能帮你啊?
    在C中,如果不特别声明,那么函数压栈模式是cdcel,但是DLL中,通常采用的压栈方式是stdcall。Delphi中,缺省的压栈方式又是register。
    C中的char *对于与Delphi的PChar。你出错,八成是由于函数参数的压栈没弄好造成的。
      

  4.   

    同意chechy(chechy)的说法
    我也遇到过这样的问题,procedure(); stdcall;老出地址错
    改为cdecl后就解决了.
    Delphi中过程或函数的参数的传递顺序(压栈方式)与C不一样。
    还有,你如果传的参数是string类型的,要注意先分配空间.
      

  5.   

    To chechy(chechy),bluedelphi():那该如何解决呢?
      

  6.   

    那你源码总是有的吧,把Exports的代码,及相关函数声明的代码贴出来。
      

  7.   

    不好意思,Exports指的是什么?
      

  8.   

    你能使用的DLL函数,都是DLL Exports出来的。