怎么在VC++6.0环境下编译一个IDL文件?
如题!
近来学习《COM初探》之二,里面要编译一个IDL语言:
import "D:\Program Files\Microsoft Visual Studio\VC98\Include\oaidl.idl";//导入必要的idl文件
import "D:\Program Files\Microsoft Visual Studio\VC98\Include\ocidl.idl";
//import "D:\Program Files\Microsoft Visual Studio\VC98\Include\objidl.idl";
[
uuid(61CD1D80-1FA6-434e-AFD6-BE2053C66425),// COM全局标识符,唯一确定一个对象或者接口
helpstring("ITimeBeijing Interface"),//帮助文字
object, //表明是COM对象
pointer_default(unique)//对所有的内嵌指针指定一个默认指针属性
]
interface ITimeBeijing : IUnknown //接口ITimeBeijing从IUnknown派生
{
cpp_quote("//获取当前小时数")
HRESULT GetHour([out, retval]int *hour);
cpp_quote("//获取当前分钟数")
HRESULT GetMinute([out, retval]int *minute);
cpp_quote("//获取当前秒数")
HRESULT GetSecond([out, retval]int *second);
};
[
uuid(4E4FE340-5E3E-4e6f-93D3-217714663B5B),
version(1.0),
helpstring("TimeBeijing 1.0 Type Library")
]
library TimeBeijingLib//TimeBeijingLib COM库
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(F9A47C8D-A7E4-477b-A27A-47024DE647ED),
helpstring("MyTimeBeijing Class")
]
coclass MyTimeBeijing//COM类 MyTimeBeijing
{
[default] interface ITimeBeijing;
};
};
可是用命令编译总是出现问题:
D:\Program Files\Microsoft Visual Studio\VC98\Bin>MIDL.EXE TimeBeijing.idl
Microsoft (R) MIDL Compiler Version 5.01.0164
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing .\TimeBeijing.idl
TimeBeijing.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\Include\oaidl.idl
oaidl.idl
midl : command line error MIDL1001 : cannot open input file objidl.idl
换到VC++ 6.0中也是有如下问题:
--------------------Configuration: comtwo - Win32 Debug--------------------
Creating Type Library...
Processing E:\COM\examples\COMCHUTAN\comtwo\TimeBeijing.idl
TimeBeijing.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\Include\oaidl.idl
oaidl.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\objidl.idl
objidl.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\unknwn.idl
unknwn.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\wtypes.idl
wtypes.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\Include\ocidl.idl
ocidl.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oleidl.idl
oleidl.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\servprov.idl
servprov.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\urlmon.idl
urlmon.idl
Processing D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\msxml.idl
msxml.idl
E:\COM\examples\COMCHUTAN\comtwo\TimeBeijing.idl(11) : error MIDL2311 : statements outside library block are illegal in mktyplib compatability mode : [ Interface 'ITimeBeijing' ]
E:\COM\examples\COMCHUTAN\comtwo\TimeBeijing.idl(11) : error MIDL2096 : duplicated attribute : [helpstring] [ Interface 'ITimeBeijing' ]
E:\COM\examples\COMCHUTAN\comtwo\TimeBeijing.idl(11) : error MIDL2096 : duplicated attribute : [uuid] [ Interface 'ITimeBeijing' ]
Error executing midl.exe.
comtwo.exe - 3 error(s), 0 warning(s)
各位高手请教一下哦。自己动手分析能力太差了。