有关Filter开发的问题,各位高手救命啊!陆老师,指点一下啊,谢谢!

huazaimh 2005-08-19 12:10:31
我买了陆老师的三本书
但是呢,在实际操作中还有有点问题
------------------------------------------------------------------------------------
C:\DXSDK\Samples\C++\DirectShow\Filters\TestFilter\TestFilterL.cpp(26) : error C2512: 'CBaseFilter' : no appropriate default constructor available
C:\DXSDK\Samples\C++\DirectShow\Filters\TestFilter\TestFilterL.cpp(32) : error C2512: 'CBaseFilter' : no appropriate default constructor available
C:\DXSDK\Samples\C++\DirectShow\Filters\TestFilter\TestFilterL.cpp(48) : error C2065: 'pFilter' : undeclared identifier
Error executing cl.exe.
Creating browse info file...

TestFilter.ax - 3 error(s), 0 warning(s)
---------------------------------------------------------------------------------------
我干脆把源代码贴出来 ,请大家指点一下,谢谢谢谢!!
// TestFilterL.cpp: implementation of the CTestFilter class.
//
//////////////////////////////////////////////////////////////////////


#include "stdafx.h"
#include "TestFilterL.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////



CTestFilter::CTestFilter()
{

}

CTestFilter::CTestFilter(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *hr)

{

}

CTestFilter::~CTestFilter()
{

}

CUnknown * WINAPI CTestFilter::CreateInstance(LPUNKNOWN pUnk, HRESULT *pHr)
{
// CTestFilter *pFilter = new CTestFilter(NAME("TestFilter"), pUnk, pHr);
// if (pFilter== NULL)
// {
// *pHr = E_OUTOFMEMORY;
// }
return pFilter;
}
========================================================------------------------------------------====================================----------------------------------------
// TestFilter.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "TestFilter.h"
#include "TestFilterL.h"
#include "Streams.h"

#include <initguid.h>

#include <bdaiface.h>
#include <bdatypes.h>
//
// DllRegisterServer
//
// Handles DLL registry
//
STDAPI DllRegisterServer()
{
return AMovieDllRegisterServer2(TRUE);

} // DllRegisterServer


//
// DllUnregisterServer
//
STDAPI DllUnregisterServer()
{
return AMovieDllRegisterServer2(FALSE);

} // DllUnregisterServer

// Setup data
const AMOVIESETUP_FILTER sudTestFilter =
{
&CLSID_TestFilter, // Filter CLSID
L"TestFilter", // String name
MERIT_DO_NOT_USE, // Filter merit
0,
NULL
};


CFactoryTemplate g_Templates[1] =
{
{
L"Test Filter", // Name
&CLSID_TestFilter, // CLSID
CTestFilter::CreateInstance, // Method to create an instance of MyComponent
NULL, // Initialization function
&sudTestFilter // Set-up information (for filters)
}
};

int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);

//
// DllEntryPoint
//
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
};
============================================================================
// TestFilterL.h: interface for the CTestFilter class.
//
//////////////////////////////////////////////////////////////////////


#include <streams.h>
#include "amfilter.h "
#include "initguid.h"

#if !defined(AFX_TESTFILTERL_H__4F5D951A_9829_40A8_B69F_DD12A42D6848__INCLUDED_)
#define AFX_TESTFILTERL_H__4F5D951A_9829_40A8_B69F_DD12A42D6848__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class CTestFilter : public CBaseFilter,public CCritSec
{
public:
CTestFilter();
CTestFilter(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *hr);
virtual ~CTestFilter();

static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);

};

#endif // !defined(AFX_TESTFILTERL_H__4F5D951A_9829_40A8_B69F_DD12A42D6848__INCLUDED_)


...全文
313 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mycolors 2005-09-06
  • 打赏
  • 举报
回复
楼主拿现有的FILTER例子改着学比较快,我以前做毕业设计的时侯做的就是DIRECTSHOW的东西,我就是拿DIRECT SDK里面的例子一个个看出来的
Suddy 2005-09-03
  • 打赏
  • 举报
回复
C++没有学好, 不是filter的问题
SuperKan 2005-09-01
  • 打赏
  • 举报
回复
Debug?Release?Unicode_Debug?
rageliu 2005-08-26
  • 打赏
  • 举报
回复
楼主!!
error C2512: 'CBaseFilter' : no appropriate default constructor available
错误是说CBaseFilter没有合适的构造函数
hapy兄说解决办法的!!!在你自己的类的构造函数后做这样的处理
CTestFilter::CTestFilter(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *hr) :
CBaseFilter(此处参数省略)
{
}
就没问题了
vencent 2005-08-24
  • 打赏
  • 举报
回复
能不能把windows media编程导向的源代码发给我一份啊,我的光盘被烟头烫坏了,郁闷!
谢谢了 lingfp@tom.com
huazaimh 2005-08-23
  • 打赏
  • 举报
回复
inking...
.\TestFilter.def : warning LNK4017: PRIVATE  statement not supported for the target platform; ignored
Creating library Debug/TestFilter.lib and object Debug/TestFilter.exp
TestFilterL.obj : error LNK2001: unresolved external symbol "public: virtual unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAGKXZ)
Debug/TestFilter.ax : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

这个地方老是弄不对,我知道可能是要重载这个函数,但是,怎么写都不对!
各位老师请指点一下啊!谢谢谢谢!
yyhzpk 2005-08-23
  • 打赏
  • 举报
回复
DECLARE_IUNKNOWN;
huazaimh 2005-08-23
  • 打赏
  • 举报
回复
大哥,我也是实现了的
这种办法也做了
但是呢,还是有问题
TestFilterL.obj : error LNK2001: unresolved external symbol "public: virtual unsigned long __stdcall CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAGKXZ)
Debug/TestFilter.ax : fatal error LNK1120: 1 unresolved externals
---------------------------------------
真郁闷!
不知道这个怎么搞定!!
我相信我的环境没有问题了
但是呢,却找不到问题在什么地方!
ablewindy 2005-08-23
  • 打赏
  • 举报
回复
看样子你还是拿个现成的Filter进行修改好了!
至于NonDelegatingRelease是什么,我还真没见过,至少你将它实现试试!反正简单地返回一个0就行了!
Link错误一般是你没有包含相应的库或没实现相应的方法!
ablewindy 2005-08-19
  • 打赏
  • 举报
回复
拿个例子先改改可能对你有帮助哦!
比如拿个SDK中例子试着一步步去掉他的处理的所有功能;然后再把自己想要的东西从简入繁加上去!
happydeer 2005-08-19
  • 打赏
  • 举报
回复
不知道谁教你要这么写filter的?!建议你多参考sdk的filter例子。

从你列出的代码,我大致给你指出几个问题:
1. 关于“error C2512: 'CBaseFilter' : no appropriate default constructor available”
你应该在你的filter类CTestFilter构造时同时初始化CBaseFilter对象,如下:

CTestFilter::CTestFilter(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *hr) :
CBaseFilter(此处参数省略)
{
}

2. 如果你没有在vc的project settings中设置filter的入口点是DllEntryPoint,那么你应该在DllMain函数中调用DllEntryPoint,而不是直接return TRUE。

3. 请不要在头文件中调用#include "initguid.h"
ablewindy 2005-08-19
  • 打赏
  • 举报
回复
你继承自CBaseFilter至少要实现它的两个纯虚函数:
GetPinCount()
GetPin()


huazaimh 2005-08-19
  • 打赏
  • 举报
回复
这个我都编绎了,不会有问题
但是在写Filter的时候啊,问题就来了,楼上的大哥能指点一下么?
--------------------------------------------------------------------------------------
C:\DXSDK\Samples\C++\DirectShow\Filters\TestFilter\TestFilterL.cpp(17) : error C2512: 'CBaseFilter' : no appropriate default constructor available
Error executing cl.exe.
Creating browse info file...

TestFilter.ax - 1 error(s), 0 warning(s)
boluoCTO 2005-08-19
  • 打赏
  • 举报
回复
BaseFilter在directx/sample/c++/directshow/baseclass目录下,需要编译生成lib文件,然后链接,看MS例子比任何书都好
huazaimh 2005-08-19
  • 打赏
  • 举报
回复
// TestFilterL.cpp: implementation of the CTestFilter class.
//
//////////////////////////////////////////////////////////////////////


#include "stdafx.h"
#include "TestFilterL.h"
#include "TestUIDs.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////



CTestFilter::CTestFilter()
{

}

CTestFilter::CTestFilter(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *hr)
:CBaseFilter(NAME("TestFilter"), pUnk, &m_Lock, CLSID_TestFilter)
{

}

CTestFilter::~CTestFilter()
{

}

CUnknown * WINAPI CTestFilter::CreateInstance(LPUNKNOWN pUnk, HRESULT *pHr)
{
CTestFilter *pFilter = new CTestFilter(NAME("TestFilter"), pUnk, pHr);
if (pFilter== NULL)
{
*pHr = E_OUTOFMEMORY;
}
return pFilter;
}

--------------------------------------------------------------------------------------
C:\DXSDK\Samples\C++\DirectShow\Filters\TestFilter\TestFilterL.cpp(17) : error C2512: 'CBaseFilter' : no appropriate default constructor available
Error executing cl.exe.
Creating browse info file...

TestFilter.ax - 1 error(s), 0 warning(s)
huazaimh 2005-08-19
  • 打赏
  • 举报
回复
谢谢陆老师,谢谢ablewindy(我是【风子】我怕谁) !
我现在确信我的DirectShow的环境不会有问题了,因为我是把我的工作文件放在Filter目录下面的,我把有关的设置是拷贝过去的,所以呢,不会有问题了,并且可以编绎过DirectShow里面自带的Filter例子。
上面的例子呢,是自己摸索写的,实在是比较乱。
WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键分享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、图片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式图标等个性化设置。同时,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于分类浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接会默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、图片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档类型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可分类合并单元格,以及拆分合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选时可通过 “仅筛选此项” 一步完成特定值筛选,还能根据筛选条件生成动态分析图表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF

2,553

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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