我正在开发一个涉及Microsoft Unified Communications Client API的项目; uccapi.dll。我也使用Codegear C ++ Builder 2010,而不是Visual Studio。在使用regsvr32注册dll并将其作为类型库导入C ++ Builder 2010后,生成了uccapi_tlb-和uccapi_ocx文件。将这些项目导入我的新项目后,我正在尝试按照msdn guideline创建可以登录Office Communication Server的Office Communicator客户端。
在这方面,我有两个问题:
到目前为止,我已经找到了几种创建接入点的方法,例如。
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,我在前两种情况下得到“class not registered”错误,或者在第三种情况下得到一个hresult失败。这让我想到了下一个问题。
Edit1:
//
// 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;