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

急,在线等!在OCX中使用DIRECTSHOW时,出现链接错误!!

楼主vc_c(狼)2005-06-28 10:58:06 在 专题开发/技术/项目 / 多媒体/流媒体开发 提问

Linking...  
        Creating   library   Release/VodClientOcx.lib   and   object   Release/VodClientOcx.exp  
  strmbase.lib(dllentry.obj)   :   error   LNK2001:   unresolved   external   symbol   "class   CFactoryTemplate   *   g_Templates"   (?g_Templates@@3PAVCFactoryTemplate@@A)  
  strmbase.lib(dllentry.obj)   :   error   LNK2001:   unresolved   external   symbol   "int   g_cTemplates"   (?g_cTemplates@@3HA)  
  Release/VodClientOcx.ocx   :   fatal   error   LNK1120:   2   unresolved   externals  
  Error   executing   link.exe.  
   
  环境描述:用VC6开发一个OCX控件(一个媒体播放控件),主体是一个对话框,这个对话框负责媒体的播放(其中用到了DirectShow),编译链接时出现以上错误。  
  对话框单独播放都没有问题,只是在加入到OCX中后出现问题。 问题点数:80、回复次数:6Top

1 楼yyhzpk(zpk)回复于 2005-06-28 11:23:30 得分 60

在XXCtrl.h前面加入以下语句:  
   
  extern   "C"  
  STDAPI   DllGetClassObject(REFCLSID   rclsid,   REFIID   riid,   LPVOID*   ppv)  
  {  
  AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  return   AfxDllGetClassObject(rclsid,   riid,   ppv);  
  }  
   
  /////////////////////////////////////////////////////////////////////////////  
  //   DllCanUnloadNow  
   
  extern   "C"  
  STDAPI   DllCanUnloadNow(void)  
  {  
  AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  return   AfxDllCanUnloadNow();  
  }Top

2 楼yyhzpk(zpk)回复于 2005-06-28 11:27:26 得分 0

原因好像是Dshow的streambasd.lib和ActiveX给的lib   冲突引起的。  
  但在OCX   中引用Dshow的filter,释放资源会出一些问题,希望和楼主  
  一起学习Top

3 楼httpaspjspphp(小杨大刀)回复于 2005-06-28 11:37:37 得分 0

 
  一些库没设置好吧  
  Top

4 楼ycl(原材料)回复于 2005-06-28 12:01:34 得分 20

yyhzpk(zpk)   的可以解决问题,在一些国外的网站上有详细的说明。我前段时间也碰到过该问题  
  The   problem   exists   because   you   end   up   linking   in   strmbase.lib   which   has   entry   points   functions   for   DllGetClassObject()   and   DllCanUnloadNow()   among   others.   You   really   don't   want   these   entry   points   defined   in   for   your   ActiveX   control.   They   are   designed   for   DirectShow   filters,   and   require   g_Templates   to   be   defined   by   your   filter.     One   solution   is   to   override   the   following   functions   by   implementing   them   into   your   ActiveX   control   yourself.   That   way   you   don't   pull   in   the   ones   from   the   DShowTop

5 楼yyhzpk(zpk)回复于 2005-06-28 12:48:41 得分 0

to:ycl()    
  但是加入上面的方法之后,好像在网页刷新时候,进行  
  filter资源释放的时候,有的filter好像释放不掉,仍然在正常工作,  
  不知你是否遇到过Top

6 楼vc_c(狼)回复于 2005-06-28 14:15:41 得分 0

谢谢yyhzpk和ycl两位。问题已经解决了,我在做一个VOD点播系统,客户端需要做成OCX放入IE中,有什么后续进展随时和两位联系。Top

相关问题

  • 求助:ocx中使用DirectShow编译以后出现这个错误
  • JSP错误,在线等待
  • adostoredproc错误!急,在线等!
  • 建库错误:COLLATE(在线)
  • CREATE DATABASE : COLLATE 错误 **在线**
  • socketconnetion 10061错误,在线等
  • ORA-12545错误,在线等待
  • 错误1053(在线等)
  • socket错误,在线等
  • EjB的错误。(在线等)

关键词

  • directshow
  • activex
  • release
  • ocx
  • vodclientocx
  • 对话框
  • unresolved
  • 释放
  • 出现
  • 好像

得分解答快速导航

  • 帖主:vc_c
  • yyhzpk
  • ycl

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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