纠结!急求教一下"error LNK2005: "public: virtual __cdecl CUnknown::~CUnknown(void)""的问题

ayiyi0910 2011-07-12 10:49:45
我最近在molie上用driectshow对视频进行处理,但问题一直不段.下面是我写了一个简单的继承CTransformFilter类,但编译的时候一直出错

环境vs2008, windows mobile 6(vs2005和windows mobile也会出问题同样的错误)

1 .h
#pragma once

#include "streams.h"

class CDSGrabber : public CTransformFilter
{
public:
CDSGrabber(TCHAR *, LPUNKNOWN, REFCLSID clsid);

~CDSGrabber(void);
};

2 .cpp
#include "StdAfx.h"
#include "DSGrabber.h"


CDSGrabber::CDSGrabber(TCHAR *pName, LPUNKNOWN pUnk, REFCLSID clsid)
: CTransformFilter(pName, pUnk, clsid)
{
}

CDSGrabber::~CDSGrabber(void)
{
}

3 link lib
strmbase.lib
strmiids.lib

4 错误
1>uafxcw.lib(wcefont.obj) : error LNK2005: "public: virtual __cdecl CUnknown::~CUnknown(void)" (??1CUnknown@@UAA@XZ) already defined in strmbase.lib(amfilter.obj)
1>DSGrabber.obj : error LNK2019: unresolved external symbol "public: __cdecl CTransformFilter::CTransformFilter(wchar_t *,struct IUnknown *,struct _GUID const &)" (??0CTransformFilter@@QAA@PA_WPAUIUnknown@@ABU_GUID@@@Z) referenced in function "public: __cdecl CDSGrabber::CDSGrabber(wchar_t *,struct IUnknown *,struct _GUID const &)" (??0CDSGrabber@@QAA@PA_WPAUIUnknown@@ABU_GUID@@@Z)
1>DSGrabber.obj : error LNK2001: unresolved external symbol "public: virtual long __cdecl CTransformFilter::FindPin(wchar_t const *,struct IPin * *)" (?FindPin@CTransformFilter@@UAAJPB_WPAPAUIPin@@@Z)
1>DSGrabber.obj : error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::JoinFilterGraph(struct IFilterGraph *,wchar_t const *)" (?JoinFilterGraph@CBaseFilter@@UAAJPAUIFilterGraph@@PB_W@Z)
1>DSGrabber.obj : error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::QueryVendorInfo(wchar_t * *)" (?QueryVendorInfo@CBaseFilter@@UAAJPAPA_W@Z)
1>Windows Mobile 6 Professional SDK (ARMV4I)\Release\VCInterPhone.exe : fatal error LNK1120: 4 unresolved externals
...全文
409 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也许还有一点是:
改调用约定为__stdcall

今天我也遇到类似的问题了, 总是提示:
无法从“CUnknown *(__cdecl *)(LPUNKNOWN,HRESULT *)”转换为“LPFNNewCOMObject”

后来在微软官网上找到了答案:
Building DirectShow Filters
http://technet.microsoft.com/zh-cn/library/aa451221

用Directshow就是要注意这些!!!
zhaofifan 2011-12-22
  • 打赏
  • 举报
回复
楼主解决没 了,我也碰到这样的问题
ayiyi0910 2011-07-18
  • 打赏
  • 举报
回复
我现在在win32下是能用的, 但是使用mfc就还有这个错误
ayiyi0910 2011-07-18
  • 打赏
  • 举报
回复
我打包后怎么发给你呀。
ayiyi0910 2011-07-18
  • 打赏
  • 举报
回复
谢谢,我的代码就是我发出来的这些。我就是很简单的继承了一下CTransformFilter
wqbyangtzeu 2011-07-15
  • 打赏
  • 举报
回复
我确认你的问题是环境配置有问题,你如果愿意的话可以把代码打包发给我,我帮你测试下
ayiyi0910 2011-07-13
  • 打赏
  • 举报
回复
唉,被这个问题弄的头大了
ayiyi0910 2011-07-13
  • 打赏
  • 举报
回复
谢谢楼上的,你给的那个链接的方法我早就实过了,但是还是不行的

我现在这4个纯虚函数接口也简单的实现了,但是出现这个的错误
1>strmbase.lib(amfilter.obj) : error LNK2005: "public: virtual __cdecl CUnknown::~CUnknown(void)" (??1CUnknown@@UAA@XZ) already defined in uafxcwd.lib(wcefont.obj)
1>Windows Mobile 6 Professional SDK (ARMV4I)\Debug\VCInterPhone.exe : fatal error LNK1169: one or more multiply defined symbols found
ayiyi0910 2011-07-12
  • 打赏
  • 举报
回复
后面的这个问题是宽字节的问题.
出在找到的处理方法是Congfiguration Properties->c/c++->Language里把Treat wchar_t as Built-in Type 的值从"Yes"改成"No (/Zc:wchar_t-)",但是又会出现下面的错误
1>uafxcw.lib(wcefont.obj) : error LNK2005: "public: virtual __cdecl CUnknown::~CUnknown(void)" (??1CUnknown@@UAA@XZ) already defined in strmbase.lib(amfilter.obj)
1>Windows Mobile 6 Professional SDK (ARMV4I)\Release\VCInterPhone.exe : fatal error LNK1169: one or more multiply defined symbols found
1>Build log was saved at "file://e:\code\project\VCInterPhone\VCInterPhone\Windows Mobile 6 Professional SDK (ARMV4I)\Release\BuildLog.htm"
1>VCInterPhone - 2 error(s), 0 warning(s)

唉,急向各们求救呀,这个问题已经困扰我好几天了
ayiyi0910 2011-07-12
  • 打赏
  • 举报
回复
第一个是CUnknown::~CUnknown在基类里重复定义了

我在linker->Ignore specific libray中试过把uafxcw.lib或者strmbase.lib忽略,但是这样不行的会报更多的错,两个lib都是不能忽略的
wqbyangtzeu 2011-07-12
  • 打赏
  • 举报
回复

关于你所描述的几个问题这里有解决方案:
http://apps.hi.baidu.com/share/detail/16803015

你自己编写的转换filter必须实现以下几个纯虚函数接口:
CheckInputType
CheckTransform
DecideBufferSize
GetMediaType

记得散分哦!

7,660

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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