求助:采用DivXExtend() 大大的判断媒体类型的程序,链接时老显示cannot open file "D:\Program.obj"
我的工程就一个按钮,代码如下:
而且我已经在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"




