您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> com 接口调用的问题

com 接口调用的问题

来源:网络整理     时间:2016/8/31 4:35:59     关键词:

关于网友提出的“ com 接口调用的问题”问题疑问,本网通过在网上对“ com 接口调用的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: com 接口调用的问题
描述:

我刚学com设计 就是我定义了2个接口 怎么老是只能调用一个接口那? 第2个失败
望指点 谢谢 
代码:
//.ild文件
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(0E637BA6-36B4-4592-816B-13696D798BD4),
helpstring("IFun Interface"),
pointer_default(unique)
]
interface IFun : IUnknown
{
[helpstring("method ADD")] HRESULT ADD([in] long n1,[in] long n2,[out ,retval] long* pval);
[helpstring("method CAT")] HRESULT CAT([in] BSTR n1,[in] BSTR n2,[out,retval]BSTR *pval);
};
[ // 所谓手工输入,其实也是有技巧的:把上面的接口描述(IMathe)复制、粘贴下来,然后再改更方便哈
object,
uuid(0E3F4F20-2122-4686-9F83-25B39FCA0B35), // 手工或用工具产生的 IID
helpstring("IStr Interface"),
pointer_default(unique)
]
interface IStr : IUnknown
{
// 目前还没有任何接口函数
[helpstring("method Cat")] HRESULT Cat([in] BSTR s1, [in] BSTR s2, [out,retval] BSTR *psVal );
};
[
object,
uuid(E1A504C7-D979-4ca3-8F30-EF6F93E887DB),
helpstring("IMath Interface"),
pointer_default(unique)
]
interface IMath : IUnknown
{
[helpstring("method Mul")] HRESULT Mul([in] long n1,[in]long n2,[out,retval]long *pnVal);
};
[
uuid(67F86B21-C2F7-491A-BA5C-C22C6F879A33),
version(1.0),
helpstring("Simple1 1.0 Type Library")
]
library SIMPLE1Lib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(6DF95CA8-3934-4719-B881-57C19BCABA53),
helpstring("Fun Class")
]
coclass Fun
{
 interface IFun;
interface IStr; // 别忘了呦,这里还有一个那
[default]interface IMath;
};
};
而且我用 OLE VIEWER也能看到我定义的所有接口  就是调用失败


解决方案1:

肯定是你的组件coclass Fun 这个类里面没有把接口的正确值返回呀

解决方案2:

你的IDL应该没问题,估计你组件实现里有问题。

解决方案3:

你调试状态试一下呀。估计是你的这个接口没有生成!或者QueryInterface里面没有返回S_OK这个值。


以上介绍了“ com 接口调用的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3674702.html

相关图片

相关文章