Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Ошибка при компиляции проекта в VS 2008


Автор: AndreySol 4.3.2010, 08:10
проект - пример DirectShow фильтра NullInPlace из примеров к DX SDK
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afx.h(24) : fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
и указывает на строку в afx.h
#ifdef _DLL
#ifndef _AFXDLL
#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]  ----- сюда
#endif
#endif

Автор: Andrey44 4.3.2010, 08:21
По моему ты в Win32 проекте пытаешься включить MFC проект, так?

Автор: Earnest 4.3.2010, 16:28
AndreySol, тебе же ясно говорят, что нужно сделать:
Цитата

 Please #define _AFXDLL or do not use /MD[d]

А причина - несовместимые настройки проекта. Обычно, когда делаешь проект визардом и говоришь, что хочешь использовать shared DLL, дальше визард сам все правильно ставит. Способ использования MFС где-то в районе первой страницы свойств проекта.

Автор: AndreySol 5.3.2010, 08:09
В VC++ 6.0 все прекрасно компилировалось, а в VS 2008 опять какие-то задвиги.

Цитата

or do not use /MD[d]

В настройках проекта "Runtime Library" -  выбор только "Multi-threaded DLL (/MD)" и "Multi-threaded (/MT)".

Цитата

#define _AFXDLL

где это лучше добавить

Автор: Andrey44 5.3.2010, 10:00
Цитата(AndreySol @  5.3.2010,  08:09 Найти цитируемый пост)
где это лучше добавить

В stdafx.h

Автор: AndreySol 7.3.2010, 08:40
Блин, вообще дурдом.
При конвертировании проекта в формат новой студии визард че-то напортачил - часть h и cpp файлов пропали. Сделал конвертирование заново, все файлы вроде на месте, зато ошибка при компиляции теперь другая:
Цитата

1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxv_w32.h(67) : fatal error C1189: #error :  MFC requires _WIN32_WINNT to be #defined to 0x0400 or greater

и указывает на эту строку в afxv_w32.h

Автор: Tei4 7.3.2010, 19:54
http://forum.sources.ru/index.php?showtopic=173243

только так

Автор: AndreySol 9.3.2010, 08:14
Блин, да что это за херня творится !
Решил не дрюкатся с переносом проекта в новую студию, а создать новый проект (фильтр DirectShow) и перенести в него функционал.
Все вроде сделал, начал добавлять классы фильтра, ну и для них доступ к BaseClasses из DX SDK (lib'а strmbase.lib). И началось.
Часть классов линкер видит, а часть НЕТ !
К примеру CMediaType все прекрасно, а для остального
Цитата

1>strmbase.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
1>strmbase.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)
error LNK2001: unresolved external symbol "public: virtual long __stdcall CBaseFilter::QueryVendorInfo(wchar_t * *)" (?QueryVendorInfo@CBaseFilter@@UAGJPAPA_W@Z)
.....
.....
и так далее.
А ведь все в одной либе содержится и хедер для всех классов один - streams.h
Что опять не так ? 

Автор: AndreySol 10.3.2010, 08:25
Перековырял все настройки студии и проекта, теперь ошибки стали такие:
Цитата

error LNK2019: unresolved external symbol "public: __thiscall CTransInPlaceFilter::CTransInPlaceFilter(wchar_t *,struct IUnknown *,struct _GUID const &,long *,bool)" (??0CTransInPlaceFilter@@QAE@PA_WPAUIUnknown@@ABU_GUID@@PAJ_N@Z) referenced in function "private: __thiscall CWSFilter::CWSFilter(wchar_t *,struct IUnknown *,long *)" (??0CWSFilter@@AAE@PA_WPAUIUnknown@@PAJ@Z)
error LNK2019: unresolved external symbol "public: __thiscall CBasePropertyPage::CBasePropertyPage(wchar_t *,struct IUnknown *,int,int)" (??0CBasePropertyPage@@QAE@PA_WPAUIUnknown@@HH@Z) referenced in function "public: __thiscall CWSPropPage::CWSPropPage(struct IUnknown *,long *)" (??0CWSPropPage@@QAE@PAUIUnknown@@PAJ@Z)

Было LNK2001, теперь LNK2019 - в чем разница ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)