2013-03-24 2 views
0

Я получил эту ошибку при попытке компиляции кода WinCE:неразрешенный внешний символ на поморщившись

Error 3 error LNK2019: unresolved external symbol "public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(wchar_t *,struct IUnknown *,struct _GUID const &,long *)" ([email protected]@[email protected][email protected]@[email protected]@[email protected]) referenced in function "private: __thiscall myFilter::myFilter(wchar_t *,struct IUnknown *,long *)" ([email protected]@[email protected][email protected]@[email protected]) myFilter.obj MyFilter 
Error 4 error LNK2001: unresolved external symbol "public: virtual long __cdecl CTransformFilter::FindPin(wchar_t const *,struct IPin * *)" ([email protected]@@[email protected]@@Z) myFilter.obj MyFilter 
Error 5 error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::JoinFilterGraph(struct IFilterGraph *,wchar_t const *)" ([email protected]@@[email protected]@[email protected]) myFilter.obj MyFilter 
Error 6 error LNK2001: unresolved external symbol "public: virtual long __cdecl CBaseFilter::QueryVendorInfo(wchar_t * *)" ([email protected]@@[email protected]) myFilter.obj MyFilter 
Error 7 fatal error LNK1120: 4 unresolved externals WINCE600_SDK MyFilter 

I, связанный с проектом необходимые файлы, такие как: strmbase.lib. Я пытался увидеть, если strmbase.lib имеет c'tor для CTransInPlaceFilter (как error3), Andi найти у него есть, но разные:

public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(unsigned short *,struct IUnknown *,struct _GUID const &,long *); 

Я не могу бросить wchar_t * на короткий *.

Есть ли проблема с моей конкретной «strmbase.lib», или это то, что я делаю неправильно?

Спасибо!

ответ

0

В ранних версиях компилятора MS wchar_t был просто псевдонимом для unsigned short (что является нарушением стандарта C++), что объясняет реализацию в strmbase.lib. С MSC 13 это стало настраиваемым, а MSC 14 даже стал по умолчанию, если я правильно помню.

Теперь вы можете перевернуть этот переключатель так, чтобы он соответствовал lib, но есть и недостатки, например. что вы не можете перегрузить с помощью wchar_t и unsigned short. Возможно, есть лучший способ, но для этого я бы спросил, какую версию CE вы используете и какую версию компилятора используете.

+0

Я использую wince6. Как я могу узнать, какую версию компилятора я использую? Я нашел сообщение, объясняющее это, но у меня нет таких же параметров, как сказано ... – user2004403

+0

Откройте командное окно и вызовите компилятор «cl.exe» или «cl- .exe», который должен быть где-то в ваш каталог установки. Однако, какую IDE вы используете? Visual C++ 8, например, Visual Studio 2005, например, использует MSC 14. Вы также можете активировать флаг, чтобы компилятор выводил это при компиляции в среде IDE, я думаю, что это называется «баннер» или что-то в этом роде. –

Смежные вопросы