读书人

C#调用COM组件,可以创建对象,但是调用

发布时间: 2013-09-06 10:17:17 作者: rapoo

C#调用COM组件,可以创建对象,但是调用函数的时候抛出异常了.

我的这个com组件是VC实现的,主要代码如下:
idl文件内容:


[
object,
uuid(906AA3B5-7341-455F-B391-AD6D15087701),
pointer_default(unique)
]
interface IFun : IUnknown{
[] HRESULT Add([in] LONG n1, [in] LONG n2, [out,retval] LONG** pVal);
};
[
uuid(197CE716-F985-4C7A-B202-7FFB27E6B3A0),
version(1.0),
]

Fun.cpp中的函数实现:

STDMETHODIMP CFun::Add(LONG n1, LONG n2, LONG** pVal)
{
// TODO: Add your implementation code here
*pVal=new LONG;
**pVal=n1+n2;
return S_OK;
}

这个com组件用一个VC写的客户段调用是没有问题的,能运行。但是用我写的C#程序来调用就不行。如果我把Add函数的返回值类型改为LONG* pVal,不改变指针本身,那么VC客户端经过小修改也能运行,而我的C#调用程序还是会遇到同样的问题。
这到底是为什么呢?

还请指教!

[解决办法]
你的C代码不全,没看到你FuncClass怎么继承的IFun。
------解决方案--------------------


看你那个代码,想问接口能够实例化吗?你调用Add()应该不是那么样调用吧

读书人网 >C#

热点推荐