VB代码如下,可成功调用Public Declare Function gfJack Lib "e:\AAA.dll" (ByVal plain As String, ByVal count As Long, ByVal result As String) As Long
--------------------------
    Dim ReturnValue As Integer
    Dim InputString As String
    Dim ResultString As String * 35
    
    InputString = "123456"
    ReturnValue = gfJack(InputString, Len(InputString), ResultString)
    result.Text = ResultString
    
    InputString = inputtext.Text
    ReturnValue = gfJack(InputString, Len(InputString), ResultString)
    result.Text = ResultString======================
delphi代码如下出错: FUNCTION gfJack(var as_Origin:pchar;ai_Length:Longint;var as_Out:pchar):integer;external 'e:\AAA.dll';
 var
    a,c:pchar;
    i:integer;
begin
    a:=pchar('AAAAAAAA');
    c:=pchar('          ');
    i:=length(a)-1;
    gfJack(a,i,c);
    showmessage(c);
end; 将a,c改为string类型也出错!(值是通过第三个参数返回的)
如何转成delphi?在线相候,一通过即送分!谢谢!!!!!!!!!!

解决方案 »

  1.   

    //既然是按值传送,就别加var关键字。
    function gfJack(as_Origin: PChar; ai_Length: Longint; as_Out: PChar): Integer; {stdcall;} external 'e:\AAA.dll';
      

  2.   

    把第三个参数类型该成char*或是char[256]再试试
      

  3.   

    有c的原型么?
    加上stdcall试试,
    如果第三个参数是输出参数,声明前加var
      

  4.   

    两个都试一下:function gfJack(plain: string; count: Longint; result: string): Integer; stdcall; external 'e:\AAA.dll';function gfJack(plain: pchar; count: Longint; result: pchar): Integer; stdcall; external 'e:\AAA.dll';
      

  5.   

    刚才找人调试通过了
    与findcsdn所说的一样:function gfJack(plain: pchar; count: Longint; result: pchar): Integer; stdcall; external 'e:\AAA.dll';
    原来用了pchar后,传的已是指针....谢谢各位
      

  6.   

    奇怪了,我无法结贴送分了,板主可帮我结贴么?
    findcsdn(findcsdn) 80分,
    其他每人5分,
    谢谢了