0

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

谢谢!

4

1 回答 1

0

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

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

于 2013-03-31T20:15:22.207 回答