【发布时间】:2010-02-18 00:40:39
【问题描述】:
我有一个小型非托管 c++ 应用程序,我正在尝试使用 CoCreateInstance(...) 创建作为 ActiveX 控件安装的“Adobe SVG PLayer”实例。
当我在 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 位的 ActiveX dll 实例(SVG 播放器)。
我正在 Windows 7 x64 位版本上进行测试。
因此,如果您对此有任何线索,我将不胜感激。
【问题讨论】:
-
您是否为 64 位版本重新编译?
标签: c++ 64-bit activex unmanaged