关于在 ATL EXE 内部建立对象

hbs_biscuit 2016-04-18 02:46:37
我写了一个 ATL 的exe ,在外部可以正常调用 这个ATL 的COM 对象 。

这个COM 对象形如:
class ATL_NO_VTABLE CSipPhoneControl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSipPhoneControl, &CLSID_SipPhoneControl>,
public IConnectionPointContainerImpl<CSipPhoneControl>,
public CProxy_ISipPhoneControlEvents<CSipPhoneControl>,
public IDispatchImpl<ISipPhoneControl, &IID_ISipPhoneControl, &LIBID_EasemobPhoneLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
现在我在 另外一个程序中可以正常调用它,如:

HRESULT hr;
::CoInitialize(NULL);
hr = ::CoCreateInstance(CLSID_SipPhoneControl, NULL, CLSCTX_LOCAL_SERVER, IID_ISipPhoneControl, (void**)&pSipPhoneControl);
if (SUCCEEDED(hr))
{

现在我的问题是 ,我要在这个 ATL exe 中调用这个对象,

直接 new 报错
CSipPhoneControl * pControl = CSipPhoneControl();

报错 :
IntelliSense: a cast to abstract class "CSipPhoneControl" is not allowed:
function "CSipPhoneControl::AddRef" is a pure virtual function
function "CSipPhoneControl::Release" is a pure virtual function
function "CSipPhoneControl::QueryInterface" is a pure virtual function

我的问题是在 ATL exe 中调用这个对象有什么办法吗 ,难道也必须使用 CoCreateInstance 调用吗 ?
...全文
119 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbs_biscuit 2016-04-19
  • 打赏
  • 举报
回复
自问自答 使用 new CComObject < CSipPhoneControl > 创建对象

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧