我在Delphi中调用了VC编写的DLL后,程序就不能使用界面上的空间,一使用就内存出错,调用DLL是不是还需要什么特殊的技巧?

解决方案 »

  1.   

    uses Windows, ...;
    type  TTimeRec = record
        Second: Integer;
        Minute: Integer;
        Hour: Integer;
      end;  TGetTime = procedure(var Time: TTimeRec);  THandle = Integer;var  Time: TTimeRec;
      Handle: THandle;
      GetTime: TGetTime;
      ...
    begin
      Handle := LoadLibrary('DATETIME.DLL');
      if Handle <> 0 then
      begin
        @GetTime := GetProcAddress(Handle, 'GetTime');
        if @GetTime <> nil then
        begin
          GetTime(Time);
          with Time do
            WriteLn('The time is ', Hour, ':', Minute, ':', Second);
        end;
        FreeLibrary(Handle);
      end;end;
      

  2.   

    估计是调用方式有错vc的dll 到底是cdecl还是stdcall
      

  3.   

    这我倒没注意,我在Delphi中采用是stdcall调用。