===[ Что случилось с WR266 ]=== #post-id: 4211-18-23 #original-date: 5.02.2012 Sun #original-time: 6:23 PM #original-day: 4211 #original-host: WinXP Home SP3 (Build 2600) Эээээ... Всё было хорошо, я добавила в WR266 сохранение всякой дополнительной инфы в текстовые файлы, всё прекрасно работало... А потом вдруг оказалось, что программа не работает в Windows 98. Вроде запускается, а скриншотов не создаёт. Мне было лень разбираться, и я на время плюнула на это дело. Вчера вот руки наконец дошли. Для начала перепроверила код, который генерирует дополнительную информацию, у меня даже есть проект отдельный, который прямо из кода WR266 использует модули и добавляет туда Main() с условной компиляцией. Ну а тестировала я на старой буке и на виртуалке с японской Win98. Оно работало! Стала думать дальше. Вроде бы дело доходит до сохранения скриншота, потом идёт в модуль FreeImage (обёртку) и где-то там внутрях всё тухнет. Пришлось ставить VB на виртуалку, а там уже заниматься отладкой. Внезапно выяснилось, что ошибка происходит при первом же вызове функции FreeImage из DLL. Я вчиталась в сообщение об ошибке и чуть не упала - FreeImage.DLL не загружалась. Как же так? В XP всё работало, файлик тот же... Тут у меня появились подозрения и я глянула в Dependency Walker, что там у неё внутри. А внутри было SO Version - 5.0, Subsystem - 5.0. Пару версий назад авторы обновили компилятор, а новые компиляторы от MS радикально решают проблему совместимости со старыми системами. Windows NT4 и Windows 9x - это 4.10, так что загрузчик просто и не пытается загрузить DLL. Я было попробовала использовать EDITBIN, но он менял только версию Subsystem. Поэтому библиотека вешала процесс, который её пытался загрузить. посмотрев на это, я плюнула и откатилась на пару версий назад. Ибо нафиг.