Dav*_*ave 5 c# com interop com-interop .net-4.0
更新了更多调试信息
我正在运行一个我没有源代码的专有软件包,它有一个基于 COM 的插件接口。我有一个 COM 可见的 .NET 程序集,该应用程序在一台计算机上成功加载,但在另一台计算机上无法加载。
过去两天我一直在研究这个问题,我觉得我在 COM 环境中漫无目的地游荡。在没有加载我的插件的系统上,当我使用 时regasm /codebase /tlb,tlb 生成并成功注册。
当我查看唯一可用的日志文件时,它提到它无法创建对象,并返回错误代码 0x80040154。
我无法弄清楚为什么无法创建对象,希望有人可以提出一些调试策略。这是我已经尝试过的,但没有成功:
regasm /codebase /tlb。除了 PID 和日期戳之外,两个日志都是相同的,即使工作系统创建了 tlb 并成功注册,非工作系统注册了程序集,但没有创建 tlb。以下是工作和非工作系统上 OleView 中程序集条目之间的差异:
InprocServer32[InprocServer32] = (gibberish here)。InprocServer32上述相同的条目我会查看注册表,也许我需要删除那些额外的条目并再次尝试运行 regasm?
编辑 - 我解决了这个问题。感谢大家的帮助。事实证明,两个系统上都缺少一个文件,但无论出于何种原因,regasm 在一个系统上起作用,而在另一个系统上不起作用。我怀疑可能发生了变化,将依赖项复制到系统路径中的文件夹!所以我做了一个冰雹玛丽,复制了 dll,然后在没有任何消息的情况下执行了 regasm。然后应用程序成功加载了插件!
这两个系统有不同的CPU架构吗?如果是这种情况,您的 COM 对象可能明确构建为 X86 CPU 而不是 AnyCPU,在这种情况下,您可能还需要将客户端应用程序构建为 X86 以避免 X64 系统中的兼容性问题。
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |