我用d6编写的dll文件,在win2000下用:regsrv32 + MydllPath进行注册,注册可以完成,但是完成后会出现一个错误:“指令引用内存。改内存不能read”,请大家帮助解决一下,先谢了!!

解决方案 »

  1.   

    可以把你地dll简单地贴出来看看吗
      

  2.   

    这是接口调用的代码:
    unit Ut0LinkManComType;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      Windows, ActiveX, Classes, ComObj, Forms, SysUtils, LinkMan_TLB, StdVcl,
      ut9GVariable,ut0Data,PKPM_TLB, Ut2LinkMan;
    type
      TLinkManCom = class(TTypedComObject, ILinkManCom)
      protected
        function ShowLinkManForm(const ePkpmSys: IUnknown): HResult; stdcall;
      end;
    var
      ePkpm:IePkpmSys;
      ePkpmUser:IePkpmUser; 
    implementationuses ComServ;function TLinkManCom.ShowLinkManForm(const ePkpmSys: IUnknown): HResult;
    var
      ptrMainForm: ^Longint;
      FM2New: TFM2LinkMan;
      dbHandle: integer;
    begin
      Result := S_OK;
      if Assigned(epkpmSys) then
        if epkpmSys.QueryInterface(IID_IePkpmSys, epkpm) = S_OK then begin
            ptrMainForm := @(Application.MainForm);
            ptrMainForm^ := ePkpm.GetMainForm;
            Application.Handle := ePkpm.GetHandle;        DM0Data := TDM0Data.Create(nil);
            dbhandle := ePkpm.GetDBHandle;
            if Assigned(ePkpm) then
              DM0Data.InitConnection2(dbhandle)
            else
              DM0Data.InitConnection(GetDBPath);        FM2New := TFM2LinkMan.Create(Application.MainForm);
            with FM2New do
            try
              //取得用户SUERNUM
              if epkpmSys.QueryInterface(IID_IePkpmUser, ePkpmUser) <> S_OK then
                    Raise Exception.Create('系统接口无法初始化!');          Position := poDefaultPosOnly;
              FormStyle := fsMDIChild;
              WindowState := wsMaximized;
              Show;
              epkpm.SetCurrWin(FM2New.Handle);
            except
              on E: Exception do
                if Assigned(DM0Data) then begin
                  DM0Data.Free;
                  DM0Data := nil;
                end;
            end;
        end;
    end;
      

  3.   

    放下delphi的ide不用非搞什么regsrv32 + MydllPath;
      

  4.   

    关键是我给用户使用时,不能把delphi的ide给带上把
    还要用regsrv32来注册dll
    可是一注册就报错,期待高人指教!
      

  5.   

    to  delphimo((误入歧途)) :
    写一个批处理文件注册dll,注册一个报一个错,但都能注册成功,郁闷呀!!
      

  6.   

    Midas.dll Copy 过去了?
    如果是98还需要安装组建服务
      

  7.   

    to: snake_eye(★蛇眼★上帝派来灌水的人)
    Midas.dll已经copy过去了,我用的是win2k系统,我用同样的方法注册d5编写的dll就没有问题(d5用的是运行期包,d6不是,我想和这个应该没关系吧)。大家可否给点建议,这种问题应该从那一方面着手解决,谢了!!