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

求助:采用DivXExtend() 大大的判断媒体类型的程序,链接时老显示cannot open file "D:\Program.obj"

楼主killin(killin)2005-04-03 11:17:43 在 VC/MFC / 图形处理/算法 提问

我的工程就一个按钮,代码如下:  
  而且我已经在project/setting中的object/library   modules中加入了:  
  D:\Program   Files\Microsoft   Visual   Studio\VC98\Lib\MSVCRTD.LIB  
  编译没问题,但是链接的时候老是显示LINK   :   fatal   error   LNK1104:   cannot   open   file   "D:\Program.obj"  
  我试了一下,应该是lib文件的问题,怎么改啊,望高手指教。  
   
  #include   "stdafx.h"  
  #include   "judge.h"  
  #include   "judgeDlg.h"  
  #include   "d3d.h"  
  #include   "dshow.h"  
  #include   "d3dtypes.h"  
  #include   <atlbase.h>  
   
  中间略  
   
  void   CJudgeDlg::Onjudge()    
  {  
  CFileDialog   FileDlg(TRUE,   "","",   OFN_OVERWRITEPROMPT,"AVI文件   (.AVI)|*.AVI|MPG文件   (.MPG)|*.MPG|MPEG文件   (.MPEG)|*.MPEG|hnz文件   (.hnz)|*.hnz|所有文件   (*.*)|*.*||",   NULL   );  
  char   strFileName[100];  
  if(FileDlg.DoModal()==IDOK)  
  strcpy(strFileName,FileDlg.GetPathName());  
  else  
  return;  
   
   
  CDC* pdc=GetDC();  
  char   ctmp[10];  
   
      HRESULT   hr;  
  //初始化COM库  
  LPVOID     pvReserved     =   NULL;  
  ::CoInitialize(pvReserved);  
  CoInitialize(NULL);  
   
  //创建过滤器图  
          REFCLSID     rclsid   =   CLSID_FilterGraph;  
          LPUNKNOWN     pUnkOuter   =     NULL;  
          DWORD     dwClsContext   =   CLSCTX_INPROC_SERVER;  
          REFIID     riid   =   IID_IGraphBuilder;  
  IGraphBuilder   *pGraph;  
  CoCreateInstance(rclsid,     pUnkOuter,     dwClsContext,    
                  riid,   (void   **)&pGraph);  
   
  //字类型转化  
  USES_CONVERSION;  
  LPCWSTR   lpcwstrFileName;  
  lpcwstrFileName   =   A2W(strFileName);  
   
  //增加源过滤器  
  LPCWSTR     lpwstrFilterName   =   L"Source";  
  IBaseFilter   *pFileSource;  
  hr   =   pGraph->AddSourceFilter(lpcwstrFileName,   lpwstrFilterName,    
  &pFileSource);  
  if   (FAILED(hr))  
  {  
  OutputDebugString("增加源过滤器出错!");  
  };  
   
  //查询得到文件源过滤器接口  
          REFIID     iid   =   IID_IFileSourceFilter;  
          IFileSourceFilter     *pFileSourceFilter   =   NULL;  
          hr   =   pFileSource->QueryInterface(iid,   (void   **)&pFileSourceFilter);  
  if   (hr   !=   S_OK)  
  {  
  OutputDebugString("查询文件源过器出错\n");  
  }  
   
  //得到媒体类型  
  LPOLESTR     FileName;  
  AM_MEDIA_TYPE     mti;  
  hr   =   pFileSourceFilter->GetCurFile(&FileName,   &mti);  
  if   (hr   !=   S_OK)  
  {  
  OutputDebugString("取媒体流类型出错!\n");  
  }  
   
  //释放接口  
  pFileSource->Release();  
  pFileSourceFilter->Release();  
          pGraph->Release();  
          CoUninitialize();  
   
  if   (mti.majortype   !=   MEDIATYPE_Stream)    
  {  
  OutputDebugString("取媒体流类型出错!\n");  
  }  
   
  //mpeg1  
  if   (mti.subtype     ==   MEDIASUBTYPE_MPEG1System)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG1System;  
  strcpy(ctmp,"mpeg1");  
  }  
  //mpeg1  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_MPEG1VideoCD)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG1VideoCD;  
  strcpy(ctmp,"mpeg1");  
  }  
  //mpeg1  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_MPEG1Video)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG1Video;  
          strcpy(ctmp,"mpeg1");  
  }  
  //mpeg1  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_MPEG1Audio)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG1Audio;  
          strcpy(ctmp,"mpeg1");  
  }  
  //mpeg4  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_Avi)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_Avi;  
          strcpy(ctmp,"mpeg4");  
  }  
  //mpeg2  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_MPEG2_PROGRAM)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG2_PROGRAM;  
          strcpy(ctmp,"mpeg2");  
  }  
  //mpeg2  
  else   if   (mti.subtype     ==   MEDIASUBTYPE_MPEG2_TRANSPORT)  
  {  
  // mtiOutput->subtype   =   MEDIASUBTYPE_MPEG2_TRANSPORT;  
          strcpy(ctmp,"mpeg2");  
  }  
  else  
  {  
          strcpy(ctmp,"unknown");  
  }  
   
  pdc->TextOut(500,0,ctmp,strlen(ctmp));  
  }  
  问题点数:30、回复次数:8Top

1 楼killin(killin)回复于 2005-04-03 11:25:39 得分 0

程序来自原贴http://search.csdn.net/Expert/topic/603/603224.xml?temp=.9020044Top

2 楼keiy()回复于 2005-04-03 11:46:20 得分 30

我试了一下,错误与你不同,原因是没有加用DirectSDK的strmiids.lib文件  
  在项目中加入strmiids.lib后编译通过Top

3 楼killin(killin)回复于 2005-04-03 13:55:44 得分 0

我两个都加进去了,还是原来的错误啊。到底怎么回事啊?Top

4 楼keiy()回复于 2005-04-03 13:57:33 得分 0

重新建个项目试试,可能是原项目中包含了D:\Program.objTop

5 楼killin(killin)回复于 2005-04-03 15:47:35 得分 0

我重建了,好像没用。我快郁闷试了。  
  Top

6 楼keiy()回复于 2005-04-03 17:15:51 得分 0

再试试以下两种情况  
  1.建一普通project(基于dialog),看看有无错误,若有,说明你的VC设置有问题了,查设置.若无试第2步  
  2.建一project,基于directx的(最好要用到strmiids.lib),如果有问题.说明你的directx   SDK有问题了.   重新安装directx   SDK  
      如果也没问题,那就奇了,机器有毒?我也没法了  
  Top

7 楼xuzheng318(忧郁王子)回复于 2005-04-03 17:32:05 得分 0

帮楼主顶,关注!Top

8 楼killin(killin)回复于 2005-04-04 16:29:17 得分 0

试过了,是我的dxsdk装得不好,我重新装到c盘,只加用DirectSDK的strmiids.lib文件就好了。多谢keiy()   兄!Top

相关问题

  • d
  • d
  • d
  • d
  • :D
  • cannot open input file ":.obj"怎么回事?
  • 未能写入输出文件“D:\work\pro\PS\obj\Debug\PFl.dll”--“拒绝访问。 ”
  • LINK : fatal error LNK1104: cannot open file "D:\develop\Microsoft Visual Studio\VC98\Lib\WS2_32.LIB"
  • fatal error C1033: cannot open program database 'd:\myprogram\debug\vc60.pdb'如何解决啊?
  • 这是什么原因造成的?LINK : fatal error LNK1181: cannot open input file "D:\Program.obj"

关键词

  • mpeg4
  • 文件
  • mpeg
  • program
  • null
  • hnz
  • lpcwstrfilename
  • filedlg
  • pgraph
  • mpg

得分解答快速导航

  • 帖主:killin
  • keiy

相关链接

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

广告也精彩

反馈

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