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