我的dll:library bcpnt;
uses
  SysUtils,Dialogs,  Classes;{$R *.res}function GetString(i:integer) : string ;stdcall;
beginGetString := 'Hello from the DLL!' ;end ;procedure showmess;  stdcall;
begin showmessage('你好');
end;exportsGetString,
showmess;
begin
end.
--------------------------------------------------------------------------
我的dll调用程序:
unit usepas;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  Tmain = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  main: Tmain;implementation{$R *.dfm}
 function GetString(i:integer) : string ; stdcall; external 'bcpnt.dll'; name 'GetString' ;
 procedure showmess ;stdcall; external 'bcpnt.dll' ;
 
procedure Tmain.Button1Click(Sender: TObject);
begin
showmessage( pchar(GetString(1)) ) ;end;procedure Tmain.Button2Click(Sender: TObject);
begin
showmess;
end;end.
调用showmess没问题,而在调用showmessage( pchar(GetString(1)) ) ;时第一次没问题第二次也能成功显示,但显示完后会弹出invalid pointer operation的错误
哪位官人小民一名 阿