首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

CreateInstance()在vs2010中为什么没有定义呢?该怎么解决

2012-03-08 
CreateInstance()在vs2010中为什么没有定义呢?#include iostream#include objbase.husing namespace s

CreateInstance()在vs2010中为什么没有定义呢?
#include "iostream"
#include "objbase.h"

using namespace std;

void trace( const char* msg )
{
cout<<msg<<endl;
}

interface IX : IUnknown
{
virtual void _stdcall Fx();
};

interface IY : IUnknown
{
virtual void _stdcall Fy();
};

extern const IID IID_X;
extern const IID IID_Y;


class ClassA : public IX, public IY
{
virtual HRESULT _stdcall QueryInterface( const IID& iid ,void ** pvv );
virtual ULONG _stdcall AddRef();
virtual ULONG _stdcall Release();

virtual void _stdcall Fx();
virtual void _stdcall Fy();
};

HRESULT _stdcall ClassA :: QueryInterface( const IID& iid, void ** pvv)
{

if( iid == IID_IUnknown ) {
trace( "Iunknow ");
*pvv = static_cast< IX * > (this);
}
else if( iid == IID_X ) {
trace( "cxxxxxx" );
*pvv = static_cast< IX * > (this);
}
else if( iid == IID_Y ) {
trace( "yyyyyy");
*pvv = static_cast< IY * > (this);
}
else {
trace( "not have ");
*pvv = NULL;
return E_NOINTERFACE;
}

reinterpret_cast< IUnknown * > (*pvv)->AddRef();
return S_OK;

}

static const IID IID_X = {0x32bb8320, 0xb41b, 0x11cf,{0xa6,0xbb,0x0,0x80,0xc7,0xb2,0xd6,0x82}};
static const IID IID_Y = {0x32bb8321, 0xb41b, 0x11cf,{0xa6,0xbb,0x0,0x80,0xc7,0xb2,0xd6,0x82}};

int main()
{
HRESULT hr;
trace( " get an iunknow poiner ,.");
IUnknown* pIUnknown = CreateInstance();

IX* pIX = NULL;
hr = pIUnknown->QueryInterface( IID_X, ( void ** )&pIX );
if( SUCCEEDED(hr)) {
trace( " succeed Ix ");
pIX->Fx();
}

IY* pIY = NULL;
hr = pIUnknown->QueryInterface( IID_Y, ( void ** )&pIY );
if( SUCCEEDED(hr)) {
trace( " succeed Iy ");
pIY->Fy();
}

delete pIUnknown;
return 0;
}


[解决办法]
有CreateInstance()这个函数吗?
不光是vs2010中没有定义,从VC6~VS2010都没见过这个函数
你的代码是自己写的还是网上的?
如果是后者,CreateInstance()是个自定义函数,你的代码不全

热点排行