描述:
我的IDL文件是这么定义的:
import "oaidl.idl";
import "ocidl.idl";
enum DataTypeEnum
{
adEmpty = 0,
adTinyInt = 16,
adSmallInt = 2,
adInteger = 3,
adBigInt = 20,
adUnsignedTinyInt = 17,
adUnsignedSmallInt = 18,
adUnsignedInt = 19,
adUnsignedBigInt = 21,
adSingle = 4,
adDouble = 5,
adCurrency = 6,
adDecimal = 14,
adNumeric = 131,
adBoolean = 11,
adError = 10,
adUserDefined = 132,
adVariant = 12,
adIDispatch = 9,
adIUnknown = 13,
adGUID = 72,
adDate = 7,
adDBDate = 133,
adDBTime = 134,
adDBTimeStamp = 135,
adBSTR = 8,
adChar = 129,
adVarChar = 200,
adLongVarChar = 201,
adWChar = 130,
adVarWChar = 202,
adLongVarWChar = 203,
adBinary = 128,
adVarBinary = 204,
adLongVarBinary = 205
};
enum ParameterDirectionEnum
{
adParamUnknown = 0,
adParamInput = 1,
adParamOutput = 2,
adParamInputOutput = 3,
adParamReturnValue = 4
};
[
object,
uuid(9A5D23C5-7848-46FF-A1BB-1516122DA76A),
dual,
helpstring("IADOTier Interface"),
pointer_default(unique)
]
interface IADOTier : IDispatch
{
[id(1), helpstring("method Open")] HRESULT Open([in] BSTR source, [in] BSTR user, [in] BSTR pwd);
[id(2), helpstring("method OpenRecordset")] HRESULT OpenRecordset([in] VARIANT query);
[id(3), helpstring("method CloseRecordset")] HRESULT CloseRecordset(void);
........
........
};
[
uuid(0506502A-32D1-445B-BA9F-CD8F6DEDA925),
version(1.0),
helpstring("ADOAccessor 1.0 Type Library")
]
library ADOACCESSORLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(2CD7E755-374C-4D9A-8B29-33D52BEFE022),
helpstring("ADOTier Class")
]
coclass ADOTier
{
[default] interface IADOTier;
};
};
在编译成功后编译器往ADOAccessor.h中自动写入了如下内容:
enum DataTypeEnum
{
adEmpty = 0,
adTinyInt = 16,
adSmallInt = 2,
adInteger = 3,
adBigInt = 20,
adUnsignedTinyInt = 17,
adUnsignedSmallInt = 18,
adUnsignedInt = 19,
adUnsignedBigInt = 21,
adSingle = 4,
adDouble = 5,
adCurrency = 6,
adDecimal = 14,
adNumeric = 131,
adBoolean = 11,
adError = 10,
adUserDefined = 132,
adVariant = 12,
adIDispatch = 9,
adIUnknown = 13,
adGUID = 72,
adDate = 7,
adDBDate = 133,
adDBTime = 134,
adDBTimeStamp = 135,
adBSTR = 8,
adChar = 129,
adVarChar = 200,
adLongVarChar = 201,
adWChar = 130,
adVarWChar = 202,
adLongVarWChar = 203,
adBinary = 128,
adVarBinary = 204,
adLongVarBinary = 205
};
enum ParameterDirectionEnum
{
adParamUnknown = 0,
adParamInput = 1,
adParamOutput = 2,
adParamInputOutput = 3,
adParamReturnValue = 4
};
下次继续编译时就会出现编译错误:
...\adoaccessor.h(70) : error C2011: 'DataTypeEnum' : 'enum' type redefinition
...\adoaccessor.h(108) : error C2011: 'ParameterDirectionEnum' : 'enum' type redefinition
有什么办法让编译器不往adoaccessor.h中导入上述枚举类型的内容吗?
请指教!!!