Отмечу следующие моменты. Плагин использует библиотеку stlsoft. Без вот этого фикса плагин не компилируется - выдает ошибку "fatal error C1189: #error : reverse_iterator form not recognised". По крайней мере, на stlsoft версии 1.9.69 - 1.9.101 (текущая).
Далее. В коде плагина я исправил две неприятные ошибки. О первой я написал подробно - этот баг давно меня раздражал, т.к. не позволял мне запускать Paint.NET. Вторая ошибка - потерянная С++-ссылка в коде, которая приводила к чудовищным тормозам фильтра в меню. Проблемный код был таким:
class A { std::pairИзначально в конструктор класса A передавалась ссылка на локальную переменную, действительную во всей области действия экземпляра класса A. Все было в порядке. Потом, в какой-то версии плагина (причем весьма давней), класс A стал использоваться в двух функциях.. и во второй функции он уже инициализировался временной переменной, область действия которой была значительно уже области действия класса A. Возникла битая ссылка. Самое печальное, что баг проявлялся только в релизе и только на Win x64 (та же dll-ка на XP работала без проблем). Так что использование const& для членов класса - весьма опасная практика.const& m_Ref; A(std::pair const& srcRef) : m_Ref(srcRef) {} } ... A a(std::make_pair(1,1));
Для x64 плагин скомпилировался подозрительно легко. Все что я сделал - объявил макрос WIN64, да настроил x64-конфигурацию в проекте. Думаю, что ошибки здесь еще выплывут.
Появилась дополнительная проблема с размерами плагинов. У первых снапшотов они гигантские. Если раньше плагин весил на уровне 380 кб, то теперь 700 и 1100 для версий x86 и x64 соответственно. С этим, естественно, придется разбираться.
Вот и все замечания. Теперь буду править ошибки, периодически обновлять снапшоты и вести дело к первому релизу.
Комментариев нет:
Отправить комментарий