gpt4 book ai didi

c++ - x64 应用程序和 ActiveX 控件的问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:55 24 4
gpt4 key购买 nike

我有一个小型非托管 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 位主机(我的应用程序)试图创建一个 ActiveX dll(SVG 播放器)的 32 位实例。

我正在 Windows 7 x64 位版本上进行测试。

因此,如果您对此有任何线索,我将不胜感激。

最佳答案

我假设您尝试加载的 ActiveX DLL 仅为 32 位。由于 ActiveX 组件通常是 InProc,而 64 位应用程序无法加载到 32 位 DLL 中,因此您的猜测是正确的。

http://thermous.spaces.live.com/blog/cns!8DC85127F8CE2F12!161.entry

关于c++ - x64 应用程序和 ActiveX 控件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com