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