我有一个COM dll作为进程内服务器工作正常,我将其安装在组件服务COM +应用程序中。现在当我尝试从我的客户端应用程序CoCreate它时,我得到HRESULT 0x8007007e“无法找到指定的模块”。可能导致这种情况的原因是什么?
答案 0 :(得分:4)
未找到模块意味着COM系统尝试加载未找到的模块/ dll(可能由GUID引用),因为它未注册,或者因为注册中没有dll路径。
我在尝试从例如“A”创建对象时遇到此错误。 A.dll,它调用了另一个未注册的dll(B.dll)。
您可能感兴趣的工具是process monitor,它可以确切地告诉您哪些注册码由哪个进程查找,包含失败和成功代码,甚至让您看到它的调用堆栈。
答案 1 :(得分:0)
请详细说明工作与不工作之间的不同情况。
我怀疑有一个依赖于未找到的模块 - 例如,某些dll不在搜索路径中。
答案 2 :(得分:0)
告诉我。我记得通常我需要注册com组件:
Regsvr32 my_com.dll
此外,您可以验证DLL的路径是否在PATH envornnemnt变量中(是PATH还是其他变量?)。或者将其复制到应用程序的文件夹中。
还验证您的用户对此DLL的权利。
答案 3 :(得分:0)
dll在ClearCase动态视图上注册,类似于映射驱动器,不适用于COM +。解决方案是将dll和proxy / stub dll移动到本地驱动器并在那里注册。