Есть такая библиотека для работы с изображениями - DevIL. Библиотека довольно старая, собрать её из исходников под виндой практически невозможно, но зато поддерживает кучу форматов и вообще замечательная.
У этой библиотеки есть биндинги для Ruby, чем я и воспользовался, написав небольшой генератор текстурных атласов.
Недавно заметил, что на новый Ruby он перестал ставиться, ввиду того, что во-первых либа под новую Ruby не собрана, а во-вторых - из-за чуши в extconf.rb её вероятность собраться под Windows была крайне мала. На моё issue было отвечено гробовой тишиной, так как автор походу перестал поддерживать его году в 2010.
Засучив рукава, форкнул репозиторий и принялся исправлять. Скажу сразу - в итоге справился.
Гем заработал и я его даже у себя протестировал.
Вкратце расскажу, что поразило. В первую очередь, структура Rakefile сильно поменялась года за четыре, да и косяк в extconf.rb оказалось не так легко исправить. Хотя бы из-за проблемы разделителей путей, которые упорно в одних случаях нормально работают в GCC, хотя заданы слешами, а в других - нет и приходится перекраивать путь "вручную".
Вторая проблема - принудительная линковка, либо с либой от другого компилятора, либо с DLL. Это довольно глупый и костыльный хак, который поддерживается GCC и который частенько приходится использовать. Из-за обработки параметров в Makefile пришлось подхачить, но взлетело.
Самое главное - вот это вот . Потому что это может быть малопонятная ошибка в рантайме, которую руби показывает, как исключение, и она в командной строке непонятна совсем. Убило три часа моей жизни и доставило много недовольства. Хинт: в таких случаях имеет смысл использовать Dependency Walker - он может показать, что случилось, почему не подгрузилось и избавить от гадания на ключах компилятора.
У этой библиотеки есть биндинги для Ruby, чем я и воспользовался, написав небольшой генератор текстурных атласов.
Недавно заметил, что на новый Ruby он перестал ставиться, ввиду того, что во-первых либа под новую Ruby не собрана, а во-вторых - из-за чуши в extconf.rb её вероятность собраться под Windows была крайне мала. На моё issue было отвечено гробовой тишиной, так как автор походу перестал поддерживать его году в 2010.
Засучив рукава, форкнул репозиторий и принялся исправлять. Скажу сразу - в итоге справился.
Гем заработал и я его даже у себя протестировал.
Вкратце расскажу, что поразило. В первую очередь, структура Rakefile сильно поменялась года за четыре, да и косяк в extconf.rb оказалось не так легко исправить. Хотя бы из-за проблемы разделителей путей, которые упорно в одних случаях нормально работают в GCC, хотя заданы слешами, а в других - нет и приходится перекраивать путь "вручную".
Вторая проблема - принудительная линковка, либо с либой от другого компилятора, либо с DLL. Это довольно глупый и костыльный хак, который поддерживается GCC и который частенько приходится использовать. Из-за обработки параметров в Makefile пришлось подхачить, но взлетело.
Самое главное - вот это вот . Потому что это может быть малопонятная ошибка в рантайме, которую руби показывает, как исключение, и она в командной строке непонятна совсем. Убило три часа моей жизни и доставило много недовольства. Хинт: в таких случаях имеет смысл использовать Dependency Walker - он может показать, что случилось, почему не подгрузилось и избавить от гадания на ключах компилятора.
Комментариев нет:
Отправить комментарий