//-------------------------------------------------------
#import "../CCalCuDll/CCalCuDll.tlb" no_namespace
//--------------------------------------------------------
2. 스마트 포인터 맴버 변수 추가
//ICCalCu* pICalCu; IAddPtr 스마트 포인터 안쓸때.
ICCalCuPtr pICalCu;
3. OnInitDialog에 추가
AfxOleInit();
HRESULT hr;
hr = pICalCu.CreateInstance(__uuidof(CCalCu));
if( FAILED(hr) )
{
MessageBox("인스턴스 생성샐패");
ExitProcess(0);
}
4. 사용은 똑같이.
5. 종료시
-->> pICalCu->Release(); 자동 릴리즈 되므로 하지 말자..
첨부된 ppt에 스마트 포인터 ATL 쓰는법 있음.
////////////// 콘솔에서의 사용 //////////////////////////
#include <iostream.h>
#include <objbase.h>
#include <windows.h>
#import "../ATLCOM_ECHOSERV_DLL/ATLCOM_ECHOSERV_DLL.tlb" no_namespace
int main()
{
CoInitialize(NULL); // AfxOleInit(); 대신 저 놈을 해야함.
HRESULT hr;
IEchoServPtr pIEchoServ;
hr = pIEchoServ.CreateInstance(__uuidof(EchoServ));
if( FAILED(hr) )
{
cout<<"인스턴스 생성실패"<<endl;
ExitProcess(0);
}
pIEchoServ->StartServer();
CoUninitialize();
return 0;
}
[출처] ATL COM 스마트 포인터사용 Client 예제.|작성자 에버어어