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 (error3 など) の c'tor があるかどうかを確認しようとしましたが、あることがわかりましたが、異なります。

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 ではデ​​フォルトになりました。

これで、lib と一致するようにこのスイッチを切り替えることができますが、これには欠点があります。たとえば、wchar_t と unsigned short でオーバーロードできないなどです。もっと良い方法があるかもしれませんが、そのためには、使用している CE のバージョンと使用しているコンパイラのバージョンをお尋ねします。

于 2013-03-31T20:15:22.207 に答える