У меня небольшое неуправляемое приложение c ++, я пытаюсь использовать CoCreateInstance (...) для создания экземпляра «Adobe SVG PLayer», который устанавливается как элемент управления ActiveX.
Когда я компилирую и запускаю свое приложение в 32-битной конфигурации, оно работает нормально, но когда я компилирую в 64-битной конфигурации, мое приложение не может создать экземпляр Adove SVG Player, хотя я знаю, что оно установлено.
Это код, который я использую для этого:
const CLSID CLSID_SVGCtl =
{0x377b5106,0x3b4e,0x4a2d,{0x85,0x20,0x87,0x67,0x59,0x0c,0xac,0x86}};
BOOL CheckSVGPresented()
{
BOOL bResult = FALSE;
try
{
IUnknown* pSvgCtrl = NULL;
if (FAILED(::CoCreateInstance(CLSID_SVGCtl, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (LPVOID*)&pSvgCtrl)) || (NULL == pSvgCtrl))
throw 1;
bResult = TRUE;
pSvgCtrl->Release();
}
catch (...)
{
bResult = FALSE;
}
return bResult;
}
Я предполагаю, что, вероятно, у меня есть проблема, потому что у меня есть 64-битный хост (мое приложение), пытающийся создать 32-битный экземпляр DLL ActiveX (проигрыватель SVG).
Я тестирую на Windows 7, 64-битная версия.
Так что если у вас есть какие-либо подсказки по этому поводу, я буду признателен за помощь.