ATL/COM : 在 IDL 文件中我们可以创建一个可以用作返回类型的类
Posted
技术标签:
【中文标题】ATL/COM : 在 IDL 文件中我们可以创建一个可以用作返回类型的类【英文标题】:ATL/COM : In IDL file can we create a class which can be used as return type 【发布时间】:2014-01-08 21:54:02 【问题描述】:我正在研究 COM/ATL。我需要使用一个类对象作为返回值,以便它可以在托管代码中使用。我可以在 idl 文件中定义结构,也可以在创建方法时将其用作返回参数。 下面是部分idl文件实现:
import "oaidl.idl";
import "ocidl.idl";
//Structure for message mapping of activation and deactivation
//Structures are working properly
[uuid(E2240D8B-EB97-4ACD-AC96-21F2EAFFE100)]
struct tagActivationManaged
WORD wMsgId;
WORD wStatus;
WORD wClient;
WORD wClientId;
;
//same manner if creating class it throws error.
[uuid(2ED2E59C-9362-46b2-80D8-471AD69BA5D5)]
class AuthenticationMessage
public:
Word message;
我需要更改 MIDL 中的任何设置吗?
注意:我是 COM 编程新手。
【问题讨论】:
【参考方案1】:你不能这样做——IDL 中没有 C++ 风格的类。如果你想从函数返回某个类的对象,你必须声明一个interface
,可能还有一个coclass
(根据你的情况可能不需要后者)并使函数返回该接口。
【讨论】:
以上是关于ATL/COM : 在 IDL 文件中我们可以创建一个可以用作返回类型的类的主要内容,如果未能解决你的问题,请参考以下文章