BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/lj/archive/2013/0704.1908.html

ATLное
07.04.13 19:08 // оригинал
Нда, все-таки эти игры с отменой/возвратом поддержки XP в 2012-й студии не остались без последствий (причем ладно бы только в сторонних библиотеках, но ведь и с родными черт-те что). На первый взгляд все просто - в студии выбрать тулсет v110_xp, для консольной сборки определить _USING_V110_SDK71_ и наслаждаться процессом. Но вот сегодня убил буквально полдня, пытаясь понять, где же в проекте вылез код, дергающий под XP функцию InitializeCriticalSectionEx, которой в местном kernel32.dll просто нет - с понятными последствиями.

Поиски дошли до файла atlwinverapi.h, где _AtlInitializeCriticalSectionEx в зависимости от того, определен ли _USING_V110_SDK71_, вызывает либо ту самую InitializeCriticalSectionEx, либо InitializeCriticalSectionAndSpinCount. И совершенно фантастическое ощущение - смотреть, как дебаг-версия заходит в подсвеченную серым ветку, плюя на значение макроса. С причиной более менее понятно - MS не дает отдельную версию ATL, а собранная и используемая в MFC (причем с установленным _ATL_STATIC_LIB_IMPL, тоже любовался проходом по этой серой ветке) не в курсе про заморочки с v110_xp. Но как это обходить - совершенно непонятно, все настройки, до которых можно добраться в своем проекте, на это поведение не влияют по определению.

Пришлось смотреть, откуда идет этот вызов. Оказался единственным, но в CImage::CInitGDIPlus::CInitGDIPlus, что несколько напрягло - замаячила перспектива делать для XP версию без GDI+. По счастью все оказалось проще, пришлось избавиться только от ATL::CImage. Тоже дико, но не фатально.

Итого могу сказать, что хоть и неплохо, что появился v110_xp, но появился он в роли бедного родственника, далеко не весь код можно перенести без существенных потерь. Когда уж та XP вымрет...

 
теги: софт, программизм  |  обсудить  |  все отзывы (0)  |  обсудить в LJ [3873]
назад «  » вперед

аналогичные материалы
ihrkampfное // 02.10.24 16:30
синхронное // 13.06.24 18:07
автоматизаторское // 16.05.24 18:12
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
qtменюшное // 29.09.23 23:47
тейлскейлное // 18.04.23 20:43
ютубноподкастное // 15.10.22 22:07
дваждыодиннадцатое // 22.06.22 03:30
безоблачнопарольное // 22.03.22 23:05
 
последние записи
ihrkampfное // 02.10.24 16:30
отпускное // 08.07.24 23:02
синхронное // 13.06.24 18:07
автоматизаторское // 16.05.24 18:12
песчаное // 13.03.24 18:05
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
qtменюшное // 29.09.23 23:47
неестественноинтеллектуальное // 29.09.23 16:50
основательное // 18.09.23 00:15





  Copyright © 2001-2024 Dmitry Leonov Design: Vadim Derkach