【问题标题】:Can't instantiate DLL created with Visual FoxPro无法实例化使用 Visual FoxPro 创建的 DLL
【发布时间】:2016-07-15 13:09:22
【问题描述】:

目前我必须为使用 Visual FoxPro 创建的现有应用程序创建 Web 服务。我可以从类库编译 DLL,从 DLL 生成 WSDL,但是使用 SoapUi 中的 wsdl 调用这个 DLL 会出现以下错误:

为方法 companyadd 实例化调度对象失败

另外,我无法在 OLE/COM 查看器中打开此 DLL。它给出了以下错误:IClassFactory::CreateInstance failed Unspecified error E_FAIL($800004005)

有人可以给我一些想法,我怎样才能阐明问题的原因?

对于从这个应用程序创建的一些 DLL,我没有这样的错误。

【问题讨论】:

    标签: soap dll wsdl visual-foxpro


    【解决方案1】:

    当我不得不在 VFP 中构建 OLE/COM 服务器时,大部分时间它最终都是权限。即使是构建,您也必须启动 VFP“以管理员身份运行”,以便它可以将条目写入 Windows 注册表。

    然后出现错误 800004005。这也是基于权限(根据我的经验)。为此,我必须始终从 Windows 进入 COM 服务器配置。

    从记住 32/64 位开始,您需要在 32 位模式下显式运行 DCOM 配置。为此,请从 DOS 命令窗口执行

    MMC comexp.msc /32
    

    这告诉 DCOM 配置显示基于 32 位的 COM 服务器(VFP 仅在 32 位模式下运行)

    然后,展开控制台根目录 -> 组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置的树视图控制器。然后向下滚动到您的应用程序。如果列表中未引用/未显示类名,您可能需要使用 GUID。右键单击它并选择属性。在“身份”选项卡上,您可以确定用于访问 COM 对象的帐户。仅用于测试和确认,将用户帐户设置为管理员级别帐户并尝试。一旦确认,您就知道它是否是权限访问。然后删除 admin 并放置另一个较低级别的用户帐户。当它失败时,您需要确保“用户”对可能对您的进程起作用的任何路径具有足够的权限。

    希望这会有所帮助,但同样,这主要是几年前使用 VFP 做 COM 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      相关资源
      最近更新 更多