C# 4.0 灾难性故障(来自HRESULT:0x8000FFFF的异常(E_意外)):ActiveX和C控制台应用程序
所以,我正在研究ActiveX和C,以及它们如何协同工作。问题是我一开始就犯了上述错误。我采取了以下步骤: 在VS2010中,我选择了MFC ActiveX控件项目。然后我加了一个方法短乘短a,短b;右键单击解决方案资源管理器中ProjectnameLib下的_DProjectname时弹出的菜单中的Add method(添加方法)选项。该方法的代码如下所示:C# 4.0 灾难性故障(来自HRESULT:0x8000FFFF的异常(E_意外)):ActiveX和C控制台应用程序,c#-4.0,com,activex,C# 4.0,Com,Activex,所以,我正在研究ActiveX和C,以及它们如何协同工作。问题是我一开始就犯了上述错误。我采取了以下步骤: 在VS2010中,我选择了MFC ActiveX控件项目。然后我加了一个方法短乘短a,短b;右键单击解决方案资源管理器中ProjectnameLib下的_DProjectname时弹出的菜单中的Add method(添加方法)选项。该方法的代码如下所示: SHORT CSampleProgramActivex01Ctrl::Multiply(SHORT a, SHORT b)
SHORT CSampleProgramActivex01Ctrl::Multiply(SHORT a, SHORT b)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your dispatch handler code here
return ( a * b);
}
现在我已经创建了一个简单的C控制台应用程序,它引用生成的COM文件,当我尝试使用该方法时,应用程序会因上述错误而停止。我在互联网上搜索了这个错误,但没有明确的解决方案。谢谢你的帮助。如果你们想要澄清,请告诉我。我不知道这是否被视为解决问题,但我找到了一个解决方法: 首先,我创建了C windows窗体应用程序,而不是C控制台应用程序。创建表单后,我将整个ocx作为组件添加到工具箱中。通过右键单击“工具箱”菜单中的“工具箱类型”来执行此操作。在“新建”菜单中,单击“选择项目”。这会弹出一个新菜单,在该菜单中选择COM选项卡,并在该菜单中检查COM组件,COM组件将添加到工具箱菜单中。现在将组件拖放到菜单上,就可以开始了
这似乎是每个人都在遵循的解决办法。不整洁,但这是我想的标准。 < p>查看:如何在VisualC++中使用OLE控件作为自动化服务器
@HansPassant:你知道我为什么会犯这个错误吗?我尝试了从VS6到VS2010的所有不同类型的VisualStudio,但每次都出现相同的错误。您是否有通过MFCActix向导创建.ocx文件的简单教程。我这样问是因为供应商已经通过MFC ActiveX向导创建了.ocx,我在该ocx中遇到了一些其他错误。所以我尝试用同样的方法创建自己的.ocx,并模拟供应商遇到的问题。但在我过去之前,我遇到了这个错误。非常感谢您的帮助。我想知道其他意见。您也可以使用tblimp/aximp命令行实用程序生成与生成器相同的两个包装dll。然后引用System.Windows.Forms.dll,您可以实例化var ctrl=new AxSomeControl,然后是ctrl.CreateControl。所以,基本上您可以使用ocx创建控制台应用程序,但无论如何都需要引用WinForms.dll。