destiny child
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору yozhic (пост) Цитата: Всё ж работало и так, поэтому и в голову не приходило. И если б Вы внимание не обратили, то | мы бы не узнали, что ошибка на стороне сборщика))) кто там собирал и выкладывал этот последний 4416 билд? ладно - эт не ошибка, конечно же, но нюанс, о котором может и не знать каждый. (P.S. если только в коде проекта всё ТАААААК своеобразно исходным разрабом не наверчено, что и далее описанные шаги не приведут к пользе и ожидаемому толку) Так вот дело в том, что в коде работа с папкой Plugs или Plugs64 заперта под директивой условной компиляции: #ifdef _WIN64 .... #else ....... #endif И вот корень зла кроется в том факте, что если собирать проект просто в VS студии, просто выбрав платформу х64 в комбобоксе панели сборки - то этим самым вы не включите этот флаг препроцессора для его работы в местах его внедрения! Да-да, угу-угу. Майкрософтцы совсем заплутали в 3 соснах и переложили на плечи разраба ответственность в том, чтоб понимать КАК надо собирать ИСТИННУЮ реальную 64 битную прогу. Поэтому нам надо РУКАМИ! добавить флаги 64 битности по пути: Тут для примера сборка плагина - где я собирал лишь 64 релиз - поэтому на картинке лишь это сочетание. В принципе и на дебаг надо так же вставить изменения, но это, имхо, что для плагина, что для самого AkelPad'a будет лишним - т.к. мы тут ни разу дебаг версию собирать/юзать не планируем)) И это же исправление надо, кстати, делать и для файла ресурсов! *.RC который. По идее там должно идти наследование от свойств проекта. Но иногда оно ломается и тогда логичнее конкретно для файла выставить: тут у меня правда наследование сработало - видно, что значения не жирным шрифтом описаны. Но проверять всегда это важно. Ибо внутри файла ресурсов может быть написано так: Код: #ifdef _WIN64 VALUE "ProductName", "SpellCheck (x64)" #else VALUE "ProductName", "SpellCheck (x86)" #endif | т.е. в информации о файле, когда мы будем смотреть итоговый dll - мы должны увидеть разный текст, в зависимости от того - под какую платформу мы собрали либу/ехе. P.S. Еще вариант, чтобы сделать корректнее - если унаследование флагов для ресурсов почему-то не прошли автоматом, то открыть в текстовом редакторе файл vcxproj и прям перед закрывающим тегом </ItemDefinitionGroup> для нужной конфигурации, к примеру сейчас это: <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> вставить вот этот код: Код: <ResourceCompile> <PreprocessorDefinitions>_WIN64;_AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ResourceCompile> | Я попробовал сейчас исходники 4416 сабжа собрать - просто предварительно, чтоб понять - что могу собирать - но что-то у меня ошибки попёрли.... Это без каких-то еще изменений. Просто скачал - запустил. Так что этот путь пересборки лучше бы пройти тому, кто УЖЕ точно собирал этот билд. Надо просто выставить нужные флаги препроцессора и всё тогда после сборки будет шикарно по умолчанию! А вот сохранение всей мишуры, поиск каких-то стартовых файлов/ресурсов у плагинов построен реально на умолчательном пути до <AkelPadDir>\AkelFiles\Plugs\SpellCheck Т.е. даже если мы запускаем 64 битный сабж, а он строит пути и грузит чистые 64 битные плагины, то при запуске любого из них - свои настройки/первичные загрузки чего-либо плаг сделает по этому 32 битному пути. НО этот момент уже не страшен. Это можно и использовать как есть. Главное - это пересобрать 64 битный сабж с нужными флагами, чтобы он по умолчанию генерил пути до 64 битной папки плагинов! Добавлено: Кстати - я пересобрал dll плагина еще раз - включив оптимизацию скорости. Не особо заметно правда, чтобы что-то изменилось в итоговом файле, но факт есть факт. Новая ссылка: https://www.upload.ee/files/15260466/SpellCheck.7z.html старую убил. |