вызов загрузчика TaskDialogIndirect говорит, что порядковый номер 345 не найден

Я создал простой пример MS для TaskDialogIndirect (см. https://msdn.microsoft.com/en-us/library/windows/desktop/bb760544(v=vs.85).aspx)

Когда я запускаю его, я получаю «Порядковый номер 345 не может быть расположен в библиотеке динамической компоновки COMCTL32.dll».

На приведенной выше странице указано, что требуется ComCtl32.DLL версии 6, но C:\Windows\System32\ComCtl32.DLL имеет номер 5.82.7601.18201, и я не могу найти версию 6 на диске.

Я использую Windows 7 с VS2012. TaskDialog был добавлен в Vista, так почему у меня нет правильной версии ComCtl32.DLL???


person Andrew W. Phillips    schedule 04.05.2016    source источник
comment
msdn.microsoft.com/en -нас/библиотека/окна/рабочий стол/   -  person Raymond Chen    schedule 04.05.2016


Ответы (3)


Вот общий и полезный блок кода, который должен помочь загрузить правильные общие элементы управления, comctl32.dll:

#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
person bvj    schedule 04.04.2017

Существует две версии ComCtl32.dll для Windows XP и более поздних версий (SxS) . v5.8x используется по умолчанию, вам нужно подписаться, чтобы получить v6 из-за возможной несовместимости с новыми темами/визуальными стилями. Большинство новых функций и элементов управления были добавлены только в v6.

Чтобы получить v6, вы должны добавить манифест в ваше приложение. Рекомендуется встроить манифест в ресурсы приложения, но вы также можете использовать внешний манифест; просто назовите файл XML yourappname.exe.manifest.

person Anders    schedule 26.01.2017
comment
Спасибо! Я рвал на себе волосы, пытаясь понять, что, черт возьми, происходит и на какую библиотеку ссылался порядковый номер 345, но, в конце концов, это было решением. ????‍♂️ - person nornagon; 27.06.2018

Вы можете запустить sfc /scannow, чтобы решить эту проблему. [Ссылка].

person bantya    schedule 31.10.2019