2010-05-24 127 views
2

我有一个COM互操作C++ DLL,它是通过在c#中生成的.tlb文件在C++中加载的。 当我在我的电脑上运行,它工作正常,但是当我在那个刚刚格式化它的计算机上运行得:.tlb文件必须注册?

WindowsError: exception code 0xe0434f4d 

我必须为.tlb文件或其DLL做一些事情在登记系统?关于regasm.exe的一些事情?

如果是这样,只能下载regasm.exe并使用它?

回答

3

对不起,你正确诊断这一百万英里。类型库适用于编译器,它们在运行时通常不需要。

您收到的异常代码显示发生了什么问题。它是托管异常的例外代码。换句话说,你的C#代码抛出了一个异常,并没有被处理。对于C#代码来说,这很常见,当它发现一个问题时,它不知道如何处理,然后抛出而不是生成垃圾数据。

有两个基本的方法来解决这个问题。 D方法是使用调试器切换到托管模式,并使其停止在未处理的托管异常处。例如,Debug + Exception,Thrown复选框。或者,您可以为方法本身添加一些诊断,例如将错误记录在catch块中。

开始于Q & D,它几乎总是很傻,像FileNotFound。

+0

我的问题是,我使用的是一个调用C++包装DLL的python程序,那个调用了c#com interop dll!我正在没有Visual Studio的电脑上测试它。 (我安装了C++和.net 3.5紧凑框架的重新分发部分)。它在我制作代码的计算机上工作。您能否指点我Q&D方面的问题 – 2010-05-25 11:31:43

+2

问与答的意思是“快速和肮脏”。 – 2010-05-25 11:59:19