我有一个 com interop c++ dll,它通过 c# 中生成的 .tlb 文件在 c++ 中加载。当我在我的计算机上运行时,它工作正常,但是当我在刚刚格式化的计算机上运行时,它会给出:
WindowsError: exception code 0xe0434f4d
我是否必须为 .tlb 文件或其 dll 在系统中注册做一些事情?关于 regasm.exe 的东西?
如果是这样,是否可以只下载regasm.exe并使用它?
对不起,你离正确诊断还有一百万英里。类型库用于编译器,它们(通常)在运行时不需要。
您得到的异常代码显示出了什么问题。它是托管异常的异常代码。换句话说,您的 C# 代码正在引发异常并且没有被处理。这对于 C# 代码来说是很常见的,当它发现一个它不知道如何处理的问题时,它会抛出而不是在生成垃圾数据时陷入困境。
有两种基本方法可以解决这个问题。Q&D 方法是使用切换到托管模式的调试器并使其在未处理的托管异常上停止。例如,Debug + Exception, Throw 复选框。或者,您可以向方法本身添加一些诊断,例如在 catch 块中记录错误。
从 Q&D 开始,它几乎总是一些愚蠢的东西,比如 FileNotFound。