尝试使用COM组件

时间:2011-10-21 09:33:42

标签: c# .net visual-studio com

我有一个COM组件。我在我的32位XP机器上使用regsvr32注册了它。现在,当我尝试在我的CONSOLE应用程序中实例化一个类时,应用程序就会终止,而不会给出任何异常。有什么建议??

COM dll是ABCServer.dll。代码失败,

   try
   {
     ILookUp LP = new LookUp();
     ABCServer Svr = LP.LookUpServer(hostname, port);
   }
   catch(Exception ex)
   {
     Console.WriteLine(ex.message);
   }

控件永远不会到达第2行,而当我在第1行点击F10进行调试时,应用程序就会终止

1 个答案:

答案 0 :(得分:2)

COM代码可能由于某种原因(或COM DLL的实现语言中的等效项)调用C / C ++ abort()。由于COM服务器正在进行中,因此会立即终止整个过程。

请注意,C ++异常无法通过COM边界(它们必须通过ISupportErrorInfo显式“封送”)。如果COM DLL中引发异常但COM DLL实现代码未正确捕获和处理,则可能导致abort()被调用。

如果您有COM DLL的调试信息,您可以尝试启用非托管代码调试(从项目属性的“调试”选项卡,或通过“附加到进程”对话框中的“选择”按钮)并单步执行本机COM代码以尝试诊断根本问题。