我有一个COM组件。我在我的32位XP机器上使用regsvr32注册了它。现在,当我在控制台应用程序中尝试从它实例化一个类时,应用程序只是终止,没有给出任何异常。有什么建议吗?
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时,应用程序只是终止
发布于 2011-10-21 22:21:05
COM代码可能出于某种原因调用C/C++ abort() (或COM的实现语言中的任何等效项)。由于COM服务器处于进程中,因此会立即终止整个进程。
请注意,C++异常不能通过COM边界(它们必须通过ISupportErrorInfo显式“封送”)。如果在COM中引发了异常,但COM实现代码没有正确捕获和处理该异常,则可能会导致调用abort()。
如果您有COM DLL的调试信息,可以尝试启用非托管代码调试(从项目属性的“调试”选项卡,或通过“附加到进程”对话框中的“选择”按钮),并单步执行本机COM代码以尝试诊断根本问题。
https://stackoverflow.com/questions/7847521
复制相似问题