0

我是 COM 编程的新手,解决方案可能很简单,但我做不到。我的 COM 客户端代码在早期绑定中运行良好。后期绑定问题。

客户端代码:使用 .net 4.0 框架

System.Type objType = System.Type.GetTypeFromProgID("Simple_ATL.First_ATL.1", "localhost", true);
object obj = System.Activator.CreateInstance(objType);
Type actualobj = obj.GetType();
actualobj.InvokeMember("AddNumbers", BindingFlags.InvokeMethod | BindingFlags.Instance |    BindingFlags.Public, null, obj, new object[] { 10, 20 }); 

实际obj.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;
};

};

请建议我的代码出了什么问题?

谢谢,帕万

4

0 回答 0