library abc;uses
  SysUtils,
  Classes;{$R *.res}
function Hello(var aa:PChar):Integer;stdcall;
var s1:string;
begin
  s1:='abc';
  aa:=PChar(s1);
  Result:=3;
end;
Exports
  Hello;
begin
end.
想要写个DLL并回传参数值,以上是代码,但我用VFP调用时却无法返回正确的字符串,请大侠指点。

解决方案 »

  1.   

    function Hello(var aa:PChar):Integer;stdcall;
    var s1:string;
    begin
      setlength(s1,3)
      s1:='abc';
      aa:=PChar(s1);
      Result:=3;
    end;
    Exports
      Hello;
    begin
    end.
      

  2.   

    按zxy的做了,还是不行,不知为什么,返回的字符串是乱码。
      

  3.   

    function Hello(var aa:string):Integer;stdcall;
    var s1:string;
    begin
      s1:='abc';
      aa:=trim(s1);
      Result:=3;
    end;
    Exports
      Hello;
    begin
    end.看是不是乱码?如果不是,你改一下就可以了
      

  4.   

    aa:PChar
    要先对aa分配足够的缓冲区,才可以使用,不然出问题是难免得
      

  5.   

    呵呵,VFP里面是Unicode。应该将返回值转换成普通字符看看!前段时间,我用Delphi编写的Dll,在VB调用时也发生乱码的现象,转换一下就可以了。
    VFP里面应该有相关函数转换的吧,呵呵
      

  6.   

    函数编写的应该没问题。
     jholdnew(老妞) 说的有道理,你查一下VFP的相关资料,字符的格式如果是Unicode即么需要转换才行。