访问UCCAPI.dll COM接口C ++的问题
-
18-09-2020 - |
题
我正在研究一个涉及Microsoft统一通信客户端API的项目; UCCAPI.dll。我也使用Codegear C ++ Builder 2010,而不是Visual Studio。使用Regsvr32注册DLL并将其作为类型库导入C ++ Builder 2010后,生成UCCAPI_TLB和UCCAPI_OCX文件。当将这些导入我的新项目时,我正在尝试遵循 MSDN指南用于创建办公室通信器客户端可以登录Office通信服务器。
在这方面,我有两个问题:- 访问通过OCX可用的COM界面的正确方法是什么?
我到目前为止发现了几种创建接入点的方式,例如。
TCOMIUccPlatform plat;
plat = CoUccPlatform::Create();
.
和
IUccPlatformPtr im;
im = CreateComObject(CLSID_UccPlatform);
.
和
IUccPlatform* pIUccPlatform;
hr = CoCreateInstance(CLSID_UccPlatform,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IUccPlatform),
(void**)&pIUccPlatform);
.
和
IUccPlatformPtr pIPlat;
pIPlat.CreateInstance(__uuidof(IUccPlatform));
.
这三个首先似乎很好。后者会给我一个断言失败:Intf!= 0错误0×40000015异常。使用三个顶部中的任何一个我可以访问方法并初始化平台接口。
但是,当尝试访问任何其他界面的任何相同的策略时,例如 iucccontext iuccurimanager 或 iuccuri ,所有这些都有在_tlb.h文件中定义的clsid,我要么在前两种情况下获取“未注册的类”错误,或第三种情况下的HResult失败。这让我带来了我的下一个问题。-
使用OLE-Viewer使用ole-Viewer所有接口都在注册。为什么在注册DLL时,DLL中的所有共同可创建的类都不会注册吗?什么可能是他们不同样行动的原因?
edit1来自uccapilib_tlb.h:
//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass : UccPlatform
// Interface: TCOMIUccPlatform
//
typedef TCoClassCreatorT<TCOMIUccPlatform, IUccPlatform, &CLSID_UccPlatform, &IID_IUccPlatform> CoUccPlatform;
//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass : UccUriManager
// Interface: TCOMIUccUriManager
//
typedef TCoClassCreatorT<TCOMIUccUriManager, IUccUriManager, &CLSID_UccUriManager, &IID_IUccUriManager> CoUccUriManager;
. 解决方案
这个问题已经在 Embarcadero论坛上详细讨论了 Embarcadero论坛。
不隶属于 StackOverflow