用delphi写一个程序,调用一个dlldll函数说明function GETWLSLH(P_XML,P_BZ:PChar):PChar;stdcall;export;
  过程名:    GETWLSLH
  参数:      P_XML,P_BZ:PChar  P_xml:传入的XML,P_BZ:UP:开具发票,ZF:作废发票
  作用:      发送XML到服务器
  返回值:    PChar:若正常则返回网络发票受理号,若有错误或异常则返回具体错误信息,以Err:开头 例如 Err: 传入值不得为空!

解决方案 »

  1.   

    http://hi.baidu.com/studyzyq/blog/item/a24fd2c2180b6836e5dd3be9.html
      

  2.   

    var  
      H: THandle;     //返回的DLL的句柄
      dllfrm: pchar;  //DLL函数返回值
      p: function (P_XML, P_BZ:PChar):PChar;stdcall;
      i:Integer;
    begin
      H := LoadLibrary('****.dll');
      if H <> 0 then
        @p := GetProcAddress(H, PChar('GETWLSLH'));
      if Assigned(p) then
        dllfrm := p('11', '22');
      FreeLibrary(H);
    end;
      

  3.   

    dllfrm := p('11', '22');请教一下,这句话里面的11,12是自定义的数值么?
      

  4.   

    就是要传入的参数。PCHAR类型 所以可以传字符串。是自定义的数值。根据你的需要来的。
      

  5.   

    静态调用:
    //先声明一下,就可以直接调用了!
    function GETWLSLH(P_XML,P_BZ:PChar):PChar;stdcall;external '*.dll';
      

  6.   

    function GETWLSLH(P_XML,P_BZ:PChar):PChar;stdcall;export;
    最讨厌这类返回PChar的函数,这类函数如果在动态库内分配内存,到哪去释放内存,如果不是共享内存管理器就会报错。建议如果大家都是DELPHI写的,就加上ShareMem,然后返回string,如果DLL是别的语言编写,则用参数返回,在外面先申请足够大的内存,函数只管使用赋值(Windows作法)。
      

  7.   

    动态调用,用到的东东:1、LoadLibraryA()2、GetProcAddress()3、调用子程序(,,,)4、FreeLibrary()
      

  8.   

    按&amp;quot;Ctrl+Enter&amp;quot;直接提交