CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

VB调用ATL写的COM组件的问题

楼主T97102003(池塘里的水手)2005-09-28 15:03:01 在 VC/MFC / ATL/ActiveX/COM 提问

用ATL写了个COM组件,在组件中启动一个线程进行数据处理,在线程处理数据过程中,通过连接点通知VB写的调用程序计算的进度,在VB   IDE中运行没问题,编译后运行就会崩溃。请问为什么会这样?  
  怎样解决这个问题呢? 问题点数:50、回复次数:5Top

1 楼T97102003(池塘里的水手)回复于 2005-09-28 16:03:33 得分 0

upTop

2 楼bluesky23(乐天_正在开发右半脑。。。^_^)回复于 2005-09-28 21:25:55 得分 25

在几处容易出现问题的地方输出信息到日志中,再看看Top

3 楼kongguangming(Fly)回复于 2005-09-29 09:43:15 得分 25

资源释放问题Top

4 楼T97102003(池塘里的水手)回复于 2005-10-09 10:29:18 得分 0

再UP.有经验的兄弟请指点Top

5 楼T97102003(池塘里的水手)回复于 2005-10-09 10:42:50 得分 0

做了一个最简单的例子,还是出错  
  DWORD   WINAPI   ThreadFun(LPVOID   lpVoid);  
   
  STDMETHODIMP   CAdd::Add(long   a,   long   b,   long   *pVal)  
  {  
  *pVal   =   a   +   b;  
  CreateThread(NULL,   0,   ThreadFun,   this,   0,   0);  
  return   S_OK;  
  }  
   
  DWORD   WINAPI   ThreadFun(LPVOID   lpVoid)  
  {  
          CAdd   *pAdd   =   (CAdd*)   lpVoid;  
          for(int   i=0   ;   i<65535   ;   i++)  
          {  
  pAdd->Fire_OnAdd(i,   i*2);  
  }  
  return   0;  
  }  
   
  HRESULT   Fire_OnAdd(LONG   a,   LONG   b)  
  {  
  CComVariant   varResult;  
  T*   pT   =   static_cast<T*>(this);  
  int   nConnectionIndex;  
  CComVariant*   pvars   =   new   CComVariant[2];  
  int   nConnections   =   m_vec.GetSize();  
   
  for   (nConnectionIndex   =   0;   nConnectionIndex   <   nConnections;   nConnectionIndex++)  
  {  
  pT->Lock();  
  CComPtr<IUnknown>   sp   =   m_vec.GetAt(nConnectionIndex);  
  pT->Unlock();  
  IDispatch*   pDispatch   =   reinterpret_cast<IDispatch*>(sp.p);  
  if   (pDispatch   !=   NULL)  
  {  
  VariantClear(&varResult);  
  pvars[1]   =   a;  
  pvars[0]   =   b;  
  DISPPARAMS   disp   =   {   pvars,   NULL,   2,   0   };  
  pDispatch->Invoke(0x1,   IID_NULL,   LOCALE_USER_DEFAULT,   DISPATCH_METHOD,   &disp,   &varResult,   NULL,   NULL);  
  }  
  }  
  delete[]   pvars;  
  return   varResult.scode;  
   
  }Top

相关问题

  • ATL的组件在VB中调用的问题
  • 在vb中调用VC/ATL写的COM组件时如何调试?
  • 高手帮忙:ATL写的组件,VB中调用时编译出错!!
  • ASP中调用vb组件的问题
  • 调用组件?
  • ???请问,我用ATL做了一个COM组件,在VB和ASP中都调用成功,为何在客户端VBScript脚本中却调用失败???
  • 苦恼!用asp调用ATL作的组件(很简单的组件)!
  • 奇怪的组件调用问题(vc的调用与vb有什么不同)
  • 把.net组件转为COM组件后,VB调用成功,asp调用不成功?郁闷
  • 如何在ATL编写COM组件时调用ADO

关键词

  • 组件
  • vb
  • null
  • nconnectionindex
  • pvars
  • varresult
  • threadfun
  • cadd
  • pdispatch
  • lpvoid

得分解答快速导航

  • 帖主:T97102003
  • bluesky23
  • kongguangming

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo