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 [3191]
назад «  » вперед

аналогичные материалы
яблочнопереключальное // 26.07.20 17:07
яблочноденежное // 14.07.20 23:06
ГПБ vs TV // 06.06.20 21:32
гуглемитное-2 // 14.04.20 16:01
гуглемитное // 10.04.20 12:12
сиктранзитное // 19.12.18 20:27
OpenVPNское // 27.08.18 15:09
креаторскобожественное // 20.05.17 16:37
креаторскобэкапное // 08.04.17 19:07
студийнораздутое // 08.03.17 02:24
 
последние записи
цифроналоговое // 01.05.21 14:34
клавиатурнобессонное // 15.03.21 15:47
аимешное // 19.12.20 12:55
клавиатурнопотерянное // 06.11.20 15:48
яблочноучебное // 11.09.20 18:34
яблочнопереключальное // 26.07.20 17:07
яблочноденежное // 14.07.20 23:06
яблочноотличное // 14.07.20 15:37
памятное // 18.06.20 00:59
ГПБ vs TV // 06.06.20 21:32



  Copyright © 2001-2021 Dmitry Leonov Design: Vadim Derkach