CLSID должным образом не зарегистрирован
//COMClientOfManagedClass.срр
#include <unknwn.h> ttinclude <iostream.h>
// (8D48DE87-048E-466e-95C3-06F3C21FCEAA}
static const GUID CLSID_ManagedClass =
// статическая константа
{
Ox8D48DE87, Ox048E, Ox466e,
{
0x95, ОхСЗ, 0x06, OxF3, OxC2, OxlF, OxCE, OxAA
}
};
// {C3894DE3-F5D6-46fe-84C7-C6DDOE801C86}
static const GUID IID_IManagedClass =
// статическая константа
{
OxC3894DE3, OxF5D6, Ox46fe,
{
0x84, OxC7, OxC6, OxDD, OxOE, 0x80, OxlC, 0x86 )
};
class IManagedClass : public IDispatch
{
public:
virtual HRESULT _stdcall AddEmUp( // виртуальный
long a,
long b,
long* psum) = 0;
};
void main()
{
HRESULT hResult; IManagedClass *pimc;
hResult = (reinitialize (NULL) ; // ПУСТОЙ УКАЗАТЕЛЬ
if (hResult != S_OK) return;
hResult = CoCreatelnstance (
CLSID_ManagedClass,
NULL, // ПУСТОЙ УКАЗАТЕЛЬ
CLSCTX_ALL,
IID_IManagedClass,
(void **) Spimc ) ;
if (hResult == REGDB_E_CLASSNOTREG) cout
"ERROR: CLSID is not properly registered.\n"
// "ОШИБКА: CLSID должным образом не зарегистрирован \п"
flush; // сброс
if (hResult == S_OK) {
cout "CoCreatelnstance succeeded.\n"
flush; long sum; // сумма
hResult = pimc->AddEmUp(3, 4, &sum); // должно быть 6
if (hResult == S_OK)
cout « "AddEmUp(3,4) is: " « sum « endl « flush; // «сумма
endl сброс; pimc->Release();
}
CoUninitialize ();
}
Ниже приведена выдача этой программы:
CoCreatelnstance succeeded.
AddEmUp(3,4) is: 7
Press any key to continue
CompEbook.ru Железо, дизайн, обучение и другие
Содержание Назад Вперед