在Fun.h里
public:
STDMETHOD_(long, WarningCheck)();
STDMETHOD_(BOOL, IsCP9k)(/*[out, retval]*/ int nID);
};#endif //__FUN_H_
在Fun.cpp里
STDMETHODIMP_(long) CFun::WarningCheck ()
{
// 成员变量初始化
代码。
return m_RestPaper;
}
STDMETHODIMP_(BOOL) CFun::IsCP9k(int nID)
{
// TODO: Add your implementation code here return TRUE;
}--------------------------------------------------------------------------
错误--------------------Configuration: Atl2 - Win32 Debug--------------------
Creating Type Library...
Microsoft (R) MIDL Compiler Version 5.01.0164
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing F:\Atl2\Atl2.idl
Atl2.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oaidl.idl
oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\objidl.idl
objidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\unknwn.idl
unknwn.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\wtypes.idl
wtypes.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ocidl.idl
ocidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oleidl.idl
oleidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\servprov.idl
servprov.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\urlmon.idl
urlmon.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\msxml.idl
msxml.idl
F:\Atl2\Atl2.idl(18) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'WarningCheck' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'IsCP9k' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2042 : [out] parameter is not a pointer : [ Parameter 'nID' of Procedure 'IsCP9k' ( Interface 'IFun' ) ]
Error executing midl.exe.
Atl2.dll - 3 error(s), 0 warning(s)
--------------------------------------------------------------------------------------WarningCheck 接口是我自己添加上去的,正常方法添加方法后无法显示WarningCheck
所以请高手指教下,无参数,有返回值的方法如何添加,还有我错在哪了
public:
STDMETHOD_(long, WarningCheck)();
STDMETHOD_(BOOL, IsCP9k)(/*[out, retval]*/ int nID);
};#endif //__FUN_H_
在Fun.cpp里
STDMETHODIMP_(long) CFun::WarningCheck ()
{
// 成员变量初始化
代码。
return m_RestPaper;
}
STDMETHODIMP_(BOOL) CFun::IsCP9k(int nID)
{
// TODO: Add your implementation code here return TRUE;
}--------------------------------------------------------------------------
错误--------------------Configuration: Atl2 - Win32 Debug--------------------
Creating Type Library...
Microsoft (R) MIDL Compiler Version 5.01.0164
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing F:\Atl2\Atl2.idl
Atl2.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oaidl.idl
oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\objidl.idl
objidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\unknwn.idl
unknwn.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\wtypes.idl
wtypes.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ocidl.idl
ocidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oleidl.idl
oleidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\servprov.idl
servprov.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\urlmon.idl
urlmon.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\msxml.idl
msxml.idl
F:\Atl2\Atl2.idl(18) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'WarningCheck' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'IsCP9k' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2042 : [out] parameter is not a pointer : [ Parameter 'nID' of Procedure 'IsCP9k' ( Interface 'IFun' ) ]
Error executing midl.exe.
Atl2.dll - 3 error(s), 0 warning(s)
--------------------------------------------------------------------------------------WarningCheck 接口是我自己添加上去的,正常方法添加方法后无法显示WarningCheck
所以请高手指教下,无参数,有返回值的方法如何添加,还有我错在哪了
{
*nID = 0;
return S_OK;
} 还需要改IDL。因为用STDMETHOD_的返回和out,retval可能冲突。
STDMETHOD(IsCP9k)(/*[out]*/ int* pnID, /*[out, retval]*/ BOOL* pfBOOL); 要注意:
1.接口返回值一定是HRESULT
2.用于返回的类型一定是指针建议:
如果你用的是VS2005的话,你可以用向导来帮你生成,等你熟悉之后就可以自己来了。
+_+