C# &引用;COM目标不实现IDispatch“;例外
我是COM编程新手,解决方案可能很简单,但我不能。 我的COM客户端代码在早期绑定中运行良好。后期绑定的问题 客户端代码:使用.NET4.0框架C# &引用;COM目标不实现IDispatch“;例外,c#,com,atl,idispatch,C#,Com,Atl,Idispatch,我是COM编程新手,解决方案可能很简单,但我不能。 我的COM客户端代码在早期绑定中运行良好。后期绑定的问题 客户端代码:使用.NET4.0框架 System.Type objType=System.Type.GetTypeFromProgID(“Simple\u ATL.First\u ATL.1”,“localhost”,true); object obj=System.Activator.CreateInstance(objType); 类型actualobj=obj.GetType();
System.Type objType=System.Type.GetTypeFromProgID(“Simple\u ATL.First\u ATL.1”,“localhost”,true);
object obj=System.Activator.CreateInstance(objType);
类型actualobj=obj.GetType();
actualobj.InvokeMember(“AddNumbers”,BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,null,obj,new object[]{10,20});
ActualLobj.InvokeMember引发“COM目标未实现IDispatch”异常
IDL文件:
[
object,
uuid(C8F6E230-2672-11D3-A8A8-00105AA943DF),
dual,
helpstring("IFirst_ATL Interface"),
pointer_default(unique)
]
interface IFirst_ATL : IDispatch
{
[id(1), helpstring("method MultipleNumbers")] HRESULT MultipleNumbers([in] long Num1, [in] long Num2, [out, retval] long *ReturnVal);
[id(2), helpstring("method AddNumbers")] HRESULT AddNumbers([in] long Num1, [in] long Num2, [out , retval] long *ReturnVal);
};
[
uuid(34C534A0-2671-11D3-A8A8-00105AA943DF),
version(1.1),
helpstring("Simple_ATL 1.1 Type Library")
]
library SIMPLE_ATLLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(970599E0-2673-11D3-A8A8-00105AA943DF),
version(2.1),
helpstring(" New First_ATL Class")
]
coclass First_ATL
{
[default] interface IFirst_ATL;
};
};
请告诉我我的代码出了什么问题
谢谢,
Pavan添加了更多我关注但对我无效的内容。IDL只承诺您实现IDispatch,但根据错误消息,您实际上没有这样做。这通常很难出错,ATL向导会自动生成大量代码。包括这个IDL,没有提示。也许是不合时宜的编辑,在某种程度上搞砸了对IDispatchImpl的继承。不知道发布什么代码是一个强烈的暗示,表明您将很难找出自己做错了什么。我们也是。谢谢@HansPassant。我在自动生成的代码BEGIN_COM_MAP(CFirst_ATL)COM_INTERFACE_条目(IFirst_ATL)COM_INTERFACE_条目(IDispatch)中发现了错误,当我添加它是working END_COM_MAP()时