COM中的IDL语言的难点之接口指针
发布日期:2021-07-14 20:03:19
浏览次数:6
分类:技术文章
本文共 1933 字,大约阅读时间需要 6 分钟。
IDL前置声明语法::
SOLVED
Add a forward declaration - at the TOP of IDL file:
- import "ocidl.idl";
- interface S8SimObject;
- 标准的格式:同时放在OICF中和类型库中
import "oaidl.idl";import "ocidl.idl";import "unknwn.idl";interface IX3; [ uuid(3E0B4B4D-14D0-4545-83D5-4C32B80E1FDB), ] interface IX4 : IUnknown { HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX3** pret); } [ uuid(AF49EC6D-01F9-4ada-A49D-D0082883EE7B), ] // {AF49EC6D-01F9-4ada-A49D-D0082883EE7B} interface IX3 : IUnknown { HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX4** pret); }[ uuid(CA3B37EA-E44A-49b8-9729-6E9222CAE844), version(1.0), helpstring("MATHCOM 1.0 Type Library")]library MATHCOMLib{ interface IX3; interface IX4;};
import "oaidl.idl";import "ocidl.idl";import "unknwn.idl";interface IX3;[ uuid(3E0B4B4D-14D0-4545-83D5-4C32B80E1FDB),]interface IX4 : IUnknown{ HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX3** const pret);}[ uuid(AF49EC6D-01F9-4ada-A49D-D0082883EE7B),]// {AF49EC6D-01F9-4ada-A49D-D0082883EE7B}interface IX3 : IUnknown{ HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX4** pret);}
在这个例子中,error MIDL2284 : [out] interface pointers must use double indirection : [ Parameter 'pret' of Procedure 'Minus' ( Interface 'IX3' ) ] 的错误得到解决。原因是必须用IX4**代替IX4* ,而普通的指针不需要二级指针,只有接口指针必须是二级间接寻址。如int*就可以编译通过
另外下面的代码强制放入类型库中。其实只需要在类型库中加上一个声明就可以放入 interface S8SimObject;
import "oaidl.idl";import "ocidl.idl";import "unknwn.idl";[ uuid(CA3B37EA-E44A-49b8-9729-6E9222CAE844), version(1.0), helpstring("MATHCOM 1.0 Type Library")]library MATHCOMLib{ interface IX3; [ uuid(3E0B4B4D-14D0-4545-83D5-4C32B80E1FDB), ] interface IX4 : IUnknown { HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX3** pret); } [ uuid(AF49EC6D-01F9-4ada-A49D-D0082883EE7B), ] // {AF49EC6D-01F9-4ada-A49D-D0082883EE7B} interface IX3 : IUnknown { HRESULT Minus([in]int nValue1, [in]int nValue2, [out, retval]IX4** pret); }};
转载地址:https://blog.csdn.net/daojin505/article/details/76811966 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月13日 04时33分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JXFCZX — 质数和分解(完全背包)
2019-04-28
JXFCZX — 花店橱窗(动态规划)
2019-04-28
JXFCZX — 逃亡的准备(多重背包)
2019-04-28
JXFCZX — 庆功会(多重背包)
2019-04-28
AcWing - 扩展欧几里得算法(扩欧)
2019-04-28
AcWing - 高斯消元解线性方程组(高斯消元)
2019-04-28
AcWing - 求组合数 I(递推)
2019-04-28
AcWing - 求组合数 II(预处理&逆元)
2019-04-28
AcWing - 求组合数 III(lucas&逆元)
2019-04-28
AcWing - 求组合数 IV(分解质因数)
2019-04-28
AcWing - 满足条件的01序列(组合数学&卡特兰数)
2019-04-28
AcWing - 快速排序(快排)
2019-04-28
AcWing - 归并排序(归排)
2019-04-28
AcWing - 数的范围(二分)
2019-04-28
AcWing - 数的三次方根(二分)
2019-04-28
AcWing - 高精度加法(大数加法)
2019-04-28
AcWing - 高精度减法(大数减法)
2019-04-28
AcWing - 高精度乘法(大数乘法)
2019-04-28
AcWing - 高精度除法(大数除法)
2019-04-28
AcWing - 前缀和(前缀和)
2019-04-28