建议你不要使用string;改用pchar在就是把a换成timage,不要用varaint

解决方案 »

  1.   

    如果把A换成TIMAGE更本无法编译
      

  2.   

    试试这个
    library Project1;{ Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }uses
      SysUtils,
      Classes,
      ExtCtrls;
        procedure movepic(a:timage;var b:boolean;c:string) stdcall;
        begin
        if b=true then
        begin
        a.Picture.LoadFromFile(c);
        b:=false;
        end;
        end;{$R *.res}begin
    end.
      

  3.   

    怎么老是提示应用程序正常初始化(0xc000007b失败)
      

  4.   

    我的调用是这样写的
    implementationuses Unit2;   //procedure movepic(a:timage;var b:boolean;c:string);stdcall;external'picdll.dll';{$R *.dfm}procedure TForm1.BitBtn2Click(Sender: TObject);
    //var
    //b:boolean;
     //c:string;
    begin
     //b:=true;
    // c:=extractfilepath(application.ExeName)+'\images\del2.bmp';
     //movepic(image1,b,c);end;end.
      

  5.   

    library Project1;{ Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }uses
      SysUtils,
      Classes,
      ExtCtrls;
        procedure movepic(a:timage;var b:boolean;c:string) stdcall;export;
        begin
        if b=true then
        begin
        a.Picture.LoadFromFile(c);
        b:=false;
        end;
        end;
      exports
      movepic;{$R *.res}begin
    end.
      

  6.   

    真的是很不会,
    为什么DLL里不用  RegisterClasses(Timage)就可以用类TimageZSWang快快讲讲课呀