【发布时间】:2016-12-22 17:57:21
【问题描述】:
我有一个用 c++ 编写的 COM 对象,我正在尝试为简单类型(如 int/bool)的序列声明 typedef 并访问它以便在 C# 中创建其类型的变量,其中我添加了对此 COM 对象的引用。 在我在这里添加的代码中,我写了两个选项,我试图声明 typdef - 但它们都不适合我 - 我无法在我的 C# 类中初始化这种类型的参数。 这是我idl的相关部分(库):
[
uuid(0EA0AD9B-9314-4480-8C69-22719C2EA9CF),
version(1.0),]
library ATLProject9Lib
{
typedef [public,uuid(9d286340-62c4-11e6-8b77-86f30ca893d3)]
int aaa;
typedef [public]
double numberToAdd;
struct BarStruct;
importlib("stdole2.tlb");
[
uuid(172B34D8-5D19-4635-B4AD-9171F522CA0A)
]
dispinterface _IScheduleEvents
{
properties:
methods:
};
[
uuid(34413E93-0916-4773-99C4-79163A44E4A0)
]
coclass Schedule
{
[default] interface ISchedule;
[default, source] dispinterface _IScheduleEvents;
};
};
第二个问题:例如声明一个 int 序列的 typdef:
typedef [public,uuid(9d286340-62c4-11e6-8b77-86f30ca893d3)]
sequence<int> aaa;
typedef [public]
double numberToAdd;
此代码未编译。 我收到以下错误:
1>.\ATLProject9.idl(47): error MIDL2025: syntax error : expecting a declarator or * near "<"
1>.\ATLProject9.idl(47): error MIDL2025: syntax error : expecting ; or , near "<"
1>.\ATLProject9.idl(47): error MIDL2026: cannot recover from earlier syntax errors; aborting compilation
在 COM 对象中声明 typedef(对于简单类型和序列)的正确方法是什么?
【问题讨论】:
标签: c++ visual-studio sequence typedef idl