Sunday, May 07, 2006

Проблемы с WTL

Поставил сегодня себе Visual C++ Express Edition и Microsoft Platform SDK. Думал что мой проект скомпилируется без проблем. Ха! Наивный.
Проблема в том, что мой проект использует WTL 7.5, он конечно же лежит отдельно и не входит в Platform SDK. Но требует наличия файла atlbase.h, который уже являются частью Platform SDK.
Все было бы хорошо, но atlbase.h инклюдит файл shlwapi.h, которого у меня в наличии не оказалось.
После блужданий по сети, я нашел информацию о том, что этот файл появится после установки компонента Microsoft Web Workshop(IE) SDK.
Какая логическая связь между этим компонентом и ATL я так и не понял. Ну ладно, поставил его, у меня появился shlwapi.h.
Все было бы хорошо, но у меня появилась новая проблема. При линковке проект требует библиотеку atlthunk.lib, которой опять же не оказалось в Platform SDK.

Опять поиск в сети очень помог мне. Оказалось что PSDK не поддерживает 32-ух битные ATL библиотеки. Только 64-ех битные. А что бы иметь доступ к первой надо перейти на полную платную версию Visual Studio... ну или просто закоментировать #pragma comment(lib, "atlthunk.lib") в файле atlbase.h. Я выбрал второй вариант.
Еще хотелось бы заметить, что WTL под vc8.0 не компилируется, из-за использывании не совместимых со стандартом С++ приемов. В файле atlwin.h на 1753-ей строчке используется не объявленная переменная в качестве счетчика цикла. Всё же VC6.0 очень развращает людей.