FlatSB_GetScrollInfo не удалось найти в COMCTL32.dll

Я только что обновил продукт с C++Builder 2007 до RAD Studio XE, заодно изменив некоторые сторонние компоненты.

Теперь, когда я запускаю свой продукт в Vista, я получаю следующую ошибку:


Project1.exe — точка входа не найдена

Точка входа в процедуру FlatSB_GetScrollInfo не может быть обнаружена в библиотеке динамической компоновки COMCTL32.DLL.

OK


Когда я открываю COMCTL32.DLL в шестнадцатеричном редакторе, я нахожу имя FlatSB_GetScrollInfo. Я нахожу только файлы COMCTL32.DLL в папке \Windows\, а не локальные установки.

Кто-нибудь знает, что может быть причиной этого?


person Sharkie    schedule 18.06.2011    source источник


Ответы (1)


Функции плоской полосы прокрутки не реализовано в v6 comctl32, с которым вы предположительно связываетесь.

Функции плоской полосы прокрутки реализованы в версиях Comctl32.dll с 4.71 по 5.82. Comctl32.dll версии 6.00 и выше не поддерживает плоские полосы прокрутки.

Код VCL не будет использовать эти функции, поэтому я думаю, вам нужно найти сторонний компонент, который это делает. Я предполагаю, что переход на XE представил манифест comctl32 v6 и выявил эту проблему.

С другой стороны, вы всегда можете удалить манифест версии 6, что решит эту конкретную проблему, но ваше приложение будет использовать классическую тему и будет выглядеть так, как будто вы снова используете Windows 2000!

person David Heffernan    schedule 18.06.2011
comment
Спасибо, Дэвид. Странно то, что компьютер, на котором происходит сбой, имеет COMCTL32.dll версии 5.82.6000.16386, и имя функции существует в файле. Манифест действительно требует общих элементов управления версии 6.0.0.0, но то же самое требуется и для версии, созданной с помощью BCB 2007, которая работает нормально. Я озадачен. - person Sharkie; 18.06.2011
comment
@Brian Вы должны понимать, что, поскольку XP все системы поставляются с двумя версиями comctl32 рядом, v5 и v6. Я уверен, что если вы посмотрите на версию comctl32, фактически загруженную в программу BCB2007 (например, Process Explorer), вы увидите, что она использует v5. - person David Heffernan; 18.06.2011
comment
Отвечает ли это на ваш вопрос? - person David Heffernan; 18.06.2011
comment
Более или менее :) Это помогло мне в правильном направлении, так что большое спасибо, Дэвид. Это была проблема с моим манифестом. Мне нужно заменить автоматически сгенерированный манифест на тот, который добавляет больше зависимостей, потому что я использую COM-объекты без регистрации. После того, как я взял исходный, автоматически сгенерированный манифест, добавил к нему свои собственные вещи, отключил Включить поддержку темы в проекте, а затем добавил свой собственный манифест в файл ресурсов - это волшебным образом сработало. - person Sharkie; 19.06.2011
comment
@Brian Это звучит разумно, хотя я бы порекомендовал вам выследить плоские полосы прокрутки и заменить их чем-то более современным, а затем позволить себе перейти на v6 comctl и более современный вид. - person David Heffernan; 19.06.2011