一个IDL问题

firecityplans 2009-06-12 11:48:34
在COM技术初探〈二〉里有以下一个IDL文件,
import "oaidl.idl";
import "ocidl.idl";

[

uuid(FAEAE6B7-67BE-42a4-A318-3256781E945A),
helpstring("ISimpleMath interface"),
object,
pointer_default(unique)
]
interface ISimpleMath : public IUnknown
{
HRESULT Add([in] int a, [in] int b, [out,retval]int *pret);
HRESULT Sub([in] int a, [in] int b, [out,retval] int *pret );
HRESULT Mul([in] int a, [in] int b, [out,retval] int *pret );
HRESULT Div([in] int a, [in] int b, [out,retval] int *pret );
};

[
object,
uuid(01147C39-9DA0-4f7f-B525-D129745AAD1E),
helpstring("IAdvancedMath Interface"),
pointer_default(unique)
]
interface IAdvancedMath:public IUnknown
{
HRESULT Factorial([in]int nOp1,[out,retval]int * pret);
HRESULT Fabonacci([in]int nOp1,[out,retval]int * pret);
};

[
uuid(CA3B37EA-E44A-49b8-9729-6E9222CAE844),
version(1.0),
helpstring("MATHCOM 1.0 Type Library")
]

library MathLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

[
uuid(3BCFE27E-C88D-453C-8C94-F5F7B97E7841),
helpstring("MATH class")
]
coclass Math
{
[default] interface ISimpleMath;
interface IAdvancedMath;
};
};

出现以后错误:

--------------------Configuration: coma - Win32 Debug--------------------
Creating Type Library...
Microsoft (R) MIDL Compiler Version 5.01.0164
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing E:\COM\examples\COMCHUTAN\coma\Math.idl
Math.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\coma\Math.idl(12) : error MIDL2025 : syntax error : expecting { near "IUnknown"
E:\COM\examples\COMCHUTAN\coma\Math.idl(26) : error MIDL2025 : syntax error : expecting { near "IUnknown"
E:\COM\examples\COMCHUTAN\coma\Math.idl(52) : warning MIDL2214 : semantic check incomplete due to previous errors
Error executing midl.exe.

Math.tlb - 2 error(s), 1 warning(s)

不明其理!
还望请教!
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandyandy 2009-06-18
  • 打赏
  • 举报
回复
飘过
zhihuizhilv 2009-06-14
  • 打赏
  • 举报
回复
嘎嘎
bdzwj 2009-06-12
  • 打赏
  • 举报
回复
好像在IDL接口声明中不能使用public 属性吧。去掉试试看
firecityplans 2009-06-12
  • 打赏
  • 举报
回复
多了两个public
firecityplans 2009-06-12
  • 打赏
  • 举报
回复
后来还是自己解决了。呵呵,粗心的要死。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧