0

我有一个作为进程内服务器运行良好的 COM dll,我将它安装在组件服务 COM+ 应用程序中。现在,当我尝试从客户端应用程序 CoCreate 时,我得到 HRESULT 0x8007007e“找不到指定的模块”。这可能是什么原因造成的?

4

4 回答 4

4

未找到模块意味着 COM 系统尝试加载未找到的模块/dll(可能由 GUID 引用),因为它没有注册,或者因为注册路径中不存在 dll。

我曾经在尝试从例如 A.dll 创建对象“A”时遇到此错误,该对象调用了另一个未注册的 dll (B.dll)。

您可能感兴趣的一个工具是进程监视器,它可以准确地告诉您哪个进程查找了哪些寄存器键,以及失败和成功代码,甚至可以让您看到它的调用堆栈。

于 2009-08-13T20:23:22.760 回答
0

请详细说明工作和不工作之间的不同情况。

我怀疑有一个未找到所依赖的模块 - 例如,某些 dll 不在搜索路径中。

于 2009-08-13T19:56:25.633 回答
0

很难说。我记得通常我需要用类似的东西注册 com 组件:

Regsvr32 my_com.dll

您还可以验证 DLL 的路径是否在 PATH envornnemnt 变量中(是 PATH 还是其他变量?)。或者将其复制到您的应用程序的文件夹中。

还要验证您的用户对此 DLL 的权限。

于 2009-08-13T19:56:58.130 回答
0

dll 在 ClearCase 动态视图上注册,类似于映射驱动器,COM+ 不可用。解决方案是将 dll 和代理/存根 dll 移动到本地驱动器并在那里注册它们。

于 2009-08-14T19:43:37.423 回答