初修炼ATL/Com,在作ADO连接数据库习题时遇到的无从索解的问题。
enum DataTypeEnum;enum ParameterDirectionEnum;
这两个枚举,在IDL文件中定义了就会显示重复定义,否则就会显示undefined symbol!!!???
完全找不到解决的办法!
问题究竟出在哪里?
附:两个枚举:
enum DataTypeEnum
{
adEmpty=0,
adTinyInt=16,
adSmallInt=2,
adInteger=3,
adBigInt=20,
adUnsignedTinyInt=17,
adUnsignedSmallInt=18,
adUnsignedInt=19,
adUnsignedBigInt=21,
adSingle=4,
adDouble=5,
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=202,
adVarWChar=202,
adLongVarWChar=203,
adBinary=128,
adVarBinary=204,
adLongVarBinary=205
};
enum ParameterDirectionEnum
{
adParamUnknown=0,
adParamInput=1,
adParamOutput=2,
adParamInputOutput=3,
adParamReturnValue=4
};
//**********************************************************************
//idl文件:
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(82F846DF-A5CA-4E3E-8810-0DCD449B8648),
dual,
helpstring("IADOTier Interface"),
pointer_default(unique)
]
interface IADOTier : IDispatch
{
[id(1), helpstring("method OpenCon")] HRESULT OpenCon([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);
[id(4), helpstring("method ExecuteCon")] HRESULT ExecuteCon([in]BSTR query,[in]VARIANT_BOOL bChangeRec);
[id(5), helpstring("method ExecuteCommand")] HRESULT ExecuteCommand([in]VARIANT_BOOL bStoredProcedure,[in]VARIANT_BOOL bChangeRec);
[id(6), helpstring("method AppendParameter")] HRESULT AppendParameter([in]enum DataTypeEnum type,[in]VARIANT query,[in]enum ParameterDirectionEnum where,[in]long size);
[id(7), helpstring("method Update")] HRESULT Update(void);
[id(8), helpstring("method Delete")] HRESULT Delete(void);
[id(9), helpstring("method CloseCon")] HRESULT CloseCon(void);
[id(10), helpstring("method First")] HRESULT First(void);
[id(11), helpstring("method Next")] HRESULT Next(void);
[id(12), helpstring("method Prev")] HRESULT Prev(void);
[id(13), helpstring("method Last")] HRESULT Last(void);
[id(14), helpstring("method ParamQuery")] HRESULT ParamQuery([in]BSTR query,[in]long idx1,[in]BSTR idx2,[in]BSTR idx3);
[id(15), helpstring("method ChangeParameter")] HRESULT ChangeParameter([in]long idx,[in]enum DataTypeEnum type,[in]VARIANT value,[in]enum ParameterDirectionEnum where,[in]long size);
[id(16), helpstring("method CallStoredProc")] HRESULT CallStoredProc([in]long idx1,[in]BSTR idx2,[in]BSTR idx3);
[id(17), helpstring("method Requery")] HRESULT Requery(void);
[id(18), helpstring("method ADORelease")] HRESULT ADORelease(void);
[propget, id(19), helpstring("property CommandText")] HRESULT CommandText([out, retval] BSTR *pVal);
[propput, id(19), helpstring("property CommandText")] HRESULT CommandText([in] BSTR newVal);
[propget, id(20), helpstring("property Field")] HRESULT Field([in]VARIANT idx, [out, retval] VARIANT *pVal);
[propput, id(20), helpstring("property Field")] HRESULT Field([in]VARIANT idx, [in] VARIANT newVal);
[propget, id(21), helpstring("property FieldCount")] HRESULT FieldCount([out, retval] long *pVal);
[propget, id(22), helpstring("property EOF")] HRESULT EOF([out, retval] VARIANT_BOOL *pVal);
[propget, id(23), helpstring("property BOF")] HRESULT BOF([out, retval] VARIANT_BOOL *pVal);
[propget, id(24), helpstring("property RecordsetCount")] HRESULT RecordsetCount([out, retval] long *pVal);
[propput, id(25), helpstring("property StoreProc")] HRESULT StoreProc([in] BSTR newVal);
[propget, id(26), helpstring("property Empty")] HRESULT Empty([out, retval] VARIANT_BOOL *pVal);
};[
uuid(56742401-BFEC-4060-9516-9BD5C6A9C404),
version(1.0),
helpstring("ADOAccessor 1.0 Type Library")
]
library ADOACCESSORLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb"); [
uuid(4CA4D850-1308-4E3D-A72A-3DE8EB7B1D20),
helpstring("ADOTier Class")
]
coclass ADOTier
{
[default] interface IADOTier;
};
};
//*************************************************************
其实就是VC数据库编程三步教学第十章的例题。
但是这个问题却完全想不出办法来解决!
多多拜上,高手帮忙啊!