fungi8210
asked on
Subject: Link error during object creation
I'm writing a directshow filter by extending CTransInPlaceFilter class. My
platform is Windows Mobile 6.0
my class constructor is as follows
CFPSFilter(TCHAR* tszName, LPUNKNOWN pUnk, HRESULT *phr) :
CTransInPlaceFilter(tszNam e, pUnk, CLSID_CFPSFilter, phr)
{}
everything goes fine until i instantiate the class using this call inside
CreateInstance function
CFPSFilter *pFilter = new CFPSFilter(NAME("FPS Counter"), pUnk, pHr);
then build it, generates the following catastrophic errors
1>------ Build started: Project: CFPSFilter, Configuration: Debug Windows
Mobile 6 Professional SDK (ARMV4I) ------
1>Compiling...
1>CFPSFilter.cpp
1>Linking...
1> Creating library Windows Mobile 6 Professional SDK
(ARMV4I)\Debug/CFPSFilter. lib and object Windows Mobile 6 Professional SDK
(ARMV4I)\Debug/CFPSFilter. exp
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "public:
__cdecl CTransInPlaceFilter::CTran sInPlaceFi lter(wchar _t *,struct IUnknown
*,struct _GUID const &,long *)"
(??0CTransInPlaceFilter@@Q AA@PA_WPAU IUnknown@@ ABU_GUID@@ PAJ@Z) referenced in
function "public: __cdecl CFPSFilter::CFPSFilter(wch ar_t *,struct IUnknown
*,long *)" (??0CFPSFilter@@QAA@PA_WPA UIUnknown@ @PAJ@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::NonDelegating QueryInter face(struc t _GUID
const &,void * *)"
(?NonDelegatingQueryInterf ace@CBaseF ilter@@UAA JABU_GUID@ @PAPAX@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual unsigned long __cdecl CUnknown::NonDelegatingAdd Ref(void)"
(?NonDelegatingAddRef@CUnk nown@@UAAK XZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual unsigned long __cdecl CBaseFilter::NonDelegating Release(vo id)"
(?NonDelegatingRelease@CBa seFilter@@ UAAKXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::StreamTime(cl ass CRefTime &)"
(?StreamTime@CBaseFilter@@ UAAJAAVCRe fTime@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetPinVersion (void)"
(?GetPinVersion@CBaseFilte r@@UAAJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual int __cdecl CTransformFilter::GetPinCo unt(void)"
(?GetPinCount@CTransformFi lter@@UAAH XZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual class CBasePin * __cdecl CTransInPlaceFilter::GetPi n(int)"
(?GetPin@CTransInPlaceFilt er@@UAAPAV CBasePin@@ H@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Transfor m(struct IMediaSample *,struct
IMediaSample *)" (?Transform@CTransformFilt er@@UAAJPA UIMediaSam ple@@0@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Decid eBufferSiz e(struct
IMemAllocator *,struct _AllocatorProperties *)"
(?DecideBufferSize@CTransI nPlaceFilt er@@UAAJPA UIMemAlloc ator@@PAU_ AllocatorP roperties@ @@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::StartStr eaming(voi d)"
(?StartStreaming@CTransfor mFilter@@U AAJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::StopStre aming(void )"
(?StopStreaming@CTransform Filter@@UA AJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::AlterQua lity(struc t tagQuality)"
(?AlterQuality@CTransformF ilter@@UAA JUtagQuali ty@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::SetMedia Type(enum _PinDirection,class
CMediaType const *)"
(?SetMediaType@CTransformF ilter@@UAA JW4_PinDir ection@@PB VCMediaTyp e@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::CheckCon nect(enum _PinDirection,struct
IPin *)" (?CheckConnect@CTransformF ilter@@UAA JW4_PinDir ection@@PA UIPin@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::BreakCon nect(enum _PinDirection)"
(?BreakConnect@CTransformF ilter@@UAA JW4_PinDir ection@@@Z )
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Compl eteConnect (enum
_PinDirection,struct IPin *)"
(?CompleteConnect@CTransIn PlaceFilte r@@UAAJW4_ PinDirecti on@@PAUIPi n@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Recei ve(struct IMediaSample *)"
(?Receive@CTransInPlaceFil ter@@UAAJP AUIMediaSa mple@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::EndOfStr eam(void)"
(?EndOfStream@CTransformFi lter@@UAAJ XZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::BeginFlu sh(void)"
(?BeginFlush@CTransformFil ter@@UAAJX Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::EndFlush (void)"
(?EndFlush@CTransformFilte r@@UAAJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::NewSegme nt(__int64 ,__int64,d ouble)"
(?NewSegment@CTransformFil ter@@UAAJ_ J0N@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CFPSFilter::Transform(stru ct IMediaSample *)"
(?Transform@CFPSFilter@@UA AJPAUIMedi aSample@@@ Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetClassID(st ruct _GUID *)"
(?GetClassID@CBaseFilter@@ UAAJPAU_GU ID@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Stop(voi d)"
(?Stop@CTransformFilter@@U AAJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Pause(vo id)"
(?Pause@CTransformFilter@@ UAAJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Run(__int64)" (?Run@CBaseFilter@@UAAJ_J@ Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetState(unsi gned long,enum _FilterState
*)" (?GetState@CBaseFilter@@UA AJKPAW4_Fi lterState@ @@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::SetSyncSource (struct IReferenceClock *)"
(?SetSyncSource@CBaseFilte r@@UAAJPAU IReference Clock@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetSyncSource (struct IReferenceClock * *)"
(?GetSyncSource@CBaseFilte r@@UAAJPAP AUIReferen ceClock@@@ Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::EnumPins(stru ct IEnumPins * *)"
(?EnumPins@CBaseFilter@@UA AJPAPAUIEn umPins@@@Z )
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::FindPin( wchar_t const *,struct IPin *
*)" (?FindPin@CTransformFilter @@UAAJPB_W PAPAUIPin@ @@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::QueryFilterIn fo(struct _FilterInfo *)"
(?QueryFilterInfo@CBaseFil ter@@UAAJP AU_FilterI nfo@@@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::JoinFilterGra ph(struct IFilterGraph
*,wchar_t const *)"
(?JoinFilterGraph@CBaseFil ter@@UAAJP AUIFilterG raph@@PB_W @Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::QueryVendorIn fo(wchar_t * *)"
(?QueryVendorInfo@CBaseFil ter@@UAAJP APA_W@Z)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Register(void )"
(?Register@CBaseFilter@@UA AJXZ)
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Unregister(vo id)"
(?Unregister@CBaseFilter@@ UAAJXZ)
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "void __cdecl
DbgBreakPoint(wchar_t const *,wchar_t const *,int)"
(?DbgBreakPoint@@YAXPB_W0H @Z) referenced in function "public: virtual long
__cdecl CTransInPlaceFilter::GetMe diaType(in t,class CMediaType *)"
(?GetMediaType@CTransInPla ceFilter@@ UAAJHPAVCM ediaType@@ @Z)
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "public:
virtual __cdecl CTransformFilter::~CTransf ormFilter( void)"
(??1CTransformFilter@@UAA@ XZ) referenced in function "public: virtual __cdecl
CTransInPlaceFilter::~CTra nsInPlaceF ilter(void )"
(??1CTransInPlaceFilter@@U AA@XZ)
1>Windows Mobile 6 Professional SDK (ARMV4I)\Debug/CFPSFilter. dll : fatal
error LNK1120: 39 unresolved externals
1>Build log was saved at "file://d:\CFPSFilter\CFPS Filter\Win dows Mobile 6
Professional SDK (ARMV4I)\Debug\BuildLog.ht m"
1>CFPSFilter - 40 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
is there any reason why i am getting all these errors?
thanks!
platform is Windows Mobile 6.0
my class constructor is as follows
CFPSFilter(TCHAR* tszName, LPUNKNOWN pUnk, HRESULT *phr) :
CTransInPlaceFilter(tszNam
{}
everything goes fine until i instantiate the class using this call inside
CreateInstance function
CFPSFilter *pFilter = new CFPSFilter(NAME("FPS Counter"), pUnk, pHr);
then build it, generates the following catastrophic errors
1>------ Build started: Project: CFPSFilter, Configuration: Debug Windows
Mobile 6 Professional SDK (ARMV4I) ------
1>Compiling...
1>CFPSFilter.cpp
1>Linking...
1> Creating library Windows Mobile 6 Professional SDK
(ARMV4I)\Debug/CFPSFilter.
(ARMV4I)\Debug/CFPSFilter.
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "public:
__cdecl CTransInPlaceFilter::CTran
*,struct _GUID const &,long *)"
(??0CTransInPlaceFilter@@Q
function "public: __cdecl CFPSFilter::CFPSFilter(wch
*,long *)" (??0CFPSFilter@@QAA@PA_WPA
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::NonDelegating
const &,void * *)"
(?NonDelegatingQueryInterf
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual unsigned long __cdecl CUnknown::NonDelegatingAdd
(?NonDelegatingAddRef@CUnk
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual unsigned long __cdecl CBaseFilter::NonDelegating
(?NonDelegatingRelease@CBa
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::StreamTime(cl
(?StreamTime@CBaseFilter@@
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetPinVersion
(?GetPinVersion@CBaseFilte
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual int __cdecl CTransformFilter::GetPinCo
(?GetPinCount@CTransformFi
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual class CBasePin * __cdecl CTransInPlaceFilter::GetPi
(?GetPin@CTransInPlaceFilt
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Transfor
IMediaSample *)" (?Transform@CTransformFilt
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Decid
IMemAllocator *,struct _AllocatorProperties *)"
(?DecideBufferSize@CTransI
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::StartStr
(?StartStreaming@CTransfor
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::StopStre
(?StopStreaming@CTransform
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::AlterQua
(?AlterQuality@CTransformF
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::SetMedia
CMediaType const *)"
(?SetMediaType@CTransformF
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::CheckCon
IPin *)" (?CheckConnect@CTransformF
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::BreakCon
(?BreakConnect@CTransformF
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Compl
_PinDirection,struct IPin *)"
(?CompleteConnect@CTransIn
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransInPlaceFilter::Recei
(?Receive@CTransInPlaceFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::EndOfStr
(?EndOfStream@CTransformFi
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::BeginFlu
(?BeginFlush@CTransformFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::EndFlush
(?EndFlush@CTransformFilte
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::NewSegme
(?NewSegment@CTransformFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CFPSFilter::Transform(stru
(?Transform@CFPSFilter@@UA
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetClassID(st
(?GetClassID@CBaseFilter@@
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Stop(voi
(?Stop@CTransformFilter@@U
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::Pause(vo
(?Pause@CTransformFilter@@
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Run(__int64)"
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetState(unsi
*)" (?GetState@CBaseFilter@@UA
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::SetSyncSource
(?SetSyncSource@CBaseFilte
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::GetSyncSource
(?GetSyncSource@CBaseFilte
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::EnumPins(stru
(?EnumPins@CBaseFilter@@UA
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CTransformFilter::FindPin(
*)" (?FindPin@CTransformFilter
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::QueryFilterIn
(?QueryFilterInfo@CBaseFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::JoinFilterGra
*,wchar_t const *)"
(?JoinFilterGraph@CBaseFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::QueryVendorIn
(?QueryVendorInfo@CBaseFil
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Register(void
(?Register@CBaseFilter@@UA
1>CFPSFilter.obj : error LNK2001: unresolved external symbol "public:
virtual long __cdecl CBaseFilter::Unregister(vo
(?Unregister@CBaseFilter@@
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "void __cdecl
DbgBreakPoint(wchar_t const *,wchar_t const *,int)"
(?DbgBreakPoint@@YAXPB_W0H
__cdecl CTransInPlaceFilter::GetMe
(?GetMediaType@CTransInPla
1>CFPSFilter.obj : error LNK2019: unresolved external symbol "public:
virtual __cdecl CTransformFilter::~CTransf
(??1CTransformFilter@@UAA@
CTransInPlaceFilter::~CTra
(??1CTransInPlaceFilter@@U
1>Windows Mobile 6 Professional SDK (ARMV4I)\Debug/CFPSFilter.
error LNK1120: 39 unresolved externals
1>Build log was saved at "file://d:\CFPSFilter\CFPS
Professional SDK (ARMV4I)\Debug\BuildLog.ht
1>CFPSFilter - 40 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
is there any reason why i am getting all these errors?
thanks!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
>>>> my problem is how do i know what library to link
It is not so difficult. All standard libraries came with the compiler. 99% of these are in sub-directories called 'lib'. These paths automatically were searched when building a project. If you added own libraries you need to add the library paths to the export lib to the current linker settings. In Visual Studio it is in the Linker Settings - Additional Library Paths. There are also common library paths settings - if you need a path for more than one project - in Tools - Options - Directories - Library Directories. For makefiles or command line builds you may expand the environment variable LIB. If you added a third party product you also have to spot the lib subdirectory that comes with that product and add the include and lib paths accordingly. For dlls you need to expand the PATH environment variable.
If you get linker errors regarding unresolved externals you need to find out to what product the missing modules belong to. That normally isn't difficult cause you must have used these modules somehow from your code or the linker wouldn't complain. With the product name you go the docs and references and search for the missing module names. There you should find what library they belong to and can add the library to your linker settings.
Regards, Alex
It is not so difficult. All standard libraries came with the compiler. 99% of these are in sub-directories called 'lib'. These paths automatically were searched when building a project. If you added own libraries you need to add the library paths to the export lib to the current linker settings. In Visual Studio it is in the Linker Settings - Additional Library Paths. There are also common library paths settings - if you need a path for more than one project - in Tools - Options - Directories - Library Directories. For makefiles or command line builds you may expand the environment variable LIB. If you added a third party product you also have to spot the lib subdirectory that comes with that product and add the include and lib paths accordingly. For dlls you need to expand the PATH environment variable.
If you get linker errors regarding unresolved externals you need to find out to what product the missing modules belong to. That normally isn't difficult cause you must have used these modules somehow from your code or the linker wouldn't complain. With the product name you go the docs and references and search for the missing module names. There you should find what library they belong to and can add the library to your linker settings.
Regards, Alex
>>>>>>how do i know what library to link to since the error message does not give any indications
this is the minimum that you should know as a developer of your application. Usually documentation is provided in any SDK about which libraries to use and their corresponding header files. At the minimum you should atleast go through these header files atleast to see the class hierarchies, methods provided etc...
this is the minimum that you should know as a developer of your application. Usually documentation is provided in any SDK about which libraries to use and their corresponding header files. At the minimum you should atleast go through these header files atleast to see the class hierarchies, methods provided etc...
ASKER
But the needed library to link was told by someone else, my problem is how do i know what library to link to since the error message does not give any indications.