Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Conditional Variables в Windows XP

При запуске программы в Windows XP вылезает окошко с сообщением:
Точка входа в процедуру InitializeConditionVariable не найдена в библиотеке Kernel32.dll.
Чем лечить?
Доступ к коду программы есть, могу написать функцию, реализующую тот же функционал, используя SetEvent(). Как сделать, чтобы в зависимости от ОС вызывалась та или иная функция? На мой взгляд, это самое простое решение.


Ответ

Сделать обертку для condition variable (если ее еще нет), а функцию InitializeConditionVariable вызывать через GetProcAddress, а если ее нет, использовать аналоги
Правда, как утверждают разработчики Chromium, сделать правильную реализацию CV под WinXP тяжело, и оно будет работать не быстро. Можете посмотреть на github
Они используют GetProcAdress для получения функций и идиому pimpl для выбора той или иной реализации (для Vista или XP)

Комментариев нет:

Отправить комментарий