说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在idl中定义的共用体出现的问题

编辑:说三道四文库 发布时间:2018-09-19 01:18
HTML文档下载 WORD文档下载 PDF文档下载
typedef enum
{
DLONG, 
DFLOAT
} DATA_TYPE;

typedef [switch_type(DATA_TYPE)] union
{
[case(DLONG)]
long lData;
[case(DFLOAT)]
float fData;
[default]
;
} DATA_VALUE;

typedef struct
{
[switch_is(type)] DATA_VALUE value;
DATA_TYPE type;
} POWER_DATA;

看了msdn知道,idl里定义union有两种方式,封装的和非封装的,上面是封装的

编译是正常通过的,客户端也能正常调用

但当我把POWER_DATA作为接口函数的参数时,编译还是能正常通过,但客户端调用CreateInstance,返回不正确的数据类型错误.

首先要看你的客户端是用vc还是vb其他宏语言,如果是后者,忠告你这是行不通的,vc倒还可以!
我已经调试成功了,问题是atl采用exe方式的时候,共用体是不认的,改成atl dll就可以了,连接事件点函数也是支持的.
估计宏语言是不行,我客户端是vc的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘