wince上未解决的外部符号

时间:2013-03-24 07:31:32

标签: windows-ce lnk2019 lnk2001

我在尝试编译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”是否有问题,或者我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

在早期的MS编译器版本中,wchar_t只是unsigned short的别名(这违反了C ++标准),因此解释了strmbase.lib中的实现。使用MSC 13,这变得可配置,如果我没记错的话,MSC 14甚至成为默认设置。

现在,你可以翻转这个开关,使它与lib匹配,但是有一些缺点,例如:你不能用wchar_t和unsigned short重载。也许有更好的方法,但为此我会问你正在使用哪个版本的CE以及你正在使用哪个编译器版本。