Re: How to solve this problem?
Sorry I omit two sentence in client codes:
#include "..\sub\IAdd.h"
#include "..\sub\IAdd_i.c"
"Lee Tow" <fbjlt@pub3.fz.fj.cn> ????????
news:uFy$dZbBIHA.3848@TK2MSFTNGP05.phx.gbl...
Hello all:
I want to use my creating interface and in the client I will call
it,Look:
1:I write a idl,the file name is IAdd.idl,
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(A62A1F29-485B-478E-BE48-9182A42FB76C)
]
interface IAdd : IUnknown
{
HRESULT Add([in] long n1,[in] long n2,[out,retval] long *pS);
};
and then: midl IAdd.idl, and then it build IAdd.h,IAdd_i.c,
2:I create a COM using atl,and insert new atl object,short name Sub,
and I copy IAdd.h,IAdd_i.c to my project path,and I open the file
stdAfx.h,
add two sentence:
#include "IAdd_i.c"
#include "IAdd.h"
3:I open head file and cpp file:
class ATL_NO_VTABLE CSub :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSub, &CLSID_Sub>,
public ISub,
//*****************************************
public IAdd
//*****************************************
{
BEGIN_COM_MAP(CAdd)
COM_INTERFACE_ENTRY(ISub)
//**********************************************
COM_INTERFACE_ENTRY(IAdd)
//**********************************************
END_COM_MAP()
public:
STDMETHOD(Add)(/*[in]*/ long n1,/*[in]*/ long n2,/*[out,retval]*/long
*pS);
};
.CPP:
STDMETHODIMP CMin::Add(long n1, long n2,long *pS)
{
// TODO: Add your implementation code here
*pS=n1+n2;
return S_OK;
}
I compile and it has no error.
4:now I write client codes,
#include <windows.h>
#include <iostream.h>
#include "..\sub\sub.h"
#include "..\sub\sub_i.c"
void main()
{
HRESULT hr;
hr=CoInitialize(NULL);
ISub *pISub=NULL;
hr=CoCreateInstance(CLSID_Sub,NULL,CLSCTX_INPROC_SERVER,IID_ISub,(void**)&pI
Sub);
long res;
hr=pISub->Min(22,10,&res);
IAdd *pIAdd=NULL;
hr=pISub->QueryInterface(IID_IAdd,(void**)&pIAdd);
if(FAILED(hr))
{
cout<<"error"<<endl; //I find the error on this.
}
....
}
Who could tell me how to solve it?thank you very much.