我在尝试编译wince代码时收到了这个错误:
Error 3 error LNK2019: unresolved external symbol "public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(wchar_t *,struct IUnknown *,struct _GUID const &,long *)" (??0CTransInPlaceFilter@@QAE@PA_WPAUIUnknown@@ABU_GUID@@PAJ@Z) referenced in function "private: __thiscall myFilter::myFilter(wchar_t *,struct IUnknown *,long *)" (??0myFilter@@AAE@PA_WPAUIUnknown@@PAJ@Z) myFilter.obj MyFilter
Error 4 error LNK2001: unresolved external symbol "public: virtual long __cdecl CTransformFilter::FindPin(wchar_t const *,struct IPin * *)" (?FindPin@CTransformFilter@@UAAJPB_WPAPAUIPin@@@Z) myFilter.obj MyFilter
Error 5 error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::JoinFilterGraph(struct IFilterGraph *,wchar_t const *)" (?JoinFilterGraph@CBaseFilter@@UAAJPAUIFilterGraph@@PB_W@Z) myFilter.obj MyFilter
Error 6 error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::QueryVendorInfo(wchar_t * *)" (?QueryVendorInfo@CBaseFilter@@UAAJPAPA_W@Z) myFilter.obj MyFilter
Error 7 fatal error LNK1120: 4 unresolved externals WINCE600_SDK MyFilter
我链接到项目必需的文件,如:strmbase.lib。 我试着看看strmbase.lib是否有CTransInPlaceFilter的c'tor(如error3),我发现它有,但不同:
public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(unsigned short *,struct IUnknown *,struct _GUID const &,long *);
我无法将wchar_t *转换为short *。
我的特定“strmbase.lib”是否有问题,或者我做错了什么?
谢谢!
答案 0 :(得分:0)
在早期的MS编译器版本中,wchar_t只是unsigned short的别名(这违反了C ++标准),因此解释了strmbase.lib中的实现。使用MSC 13,这变得可配置,如果我没记错的话,MSC 14甚至成为默认设置。
现在,你可以翻转这个开关,使它与lib匹配,但是有一些缺点,例如:你不能用wchar_t和unsigned short重载。也许有更好的方法,但为此我会问你正在使用哪个版本的CE以及你正在使用哪个编译器版本。