Путь «вы можете скопировать все модули в свой проект» на самом деле не намного проще, чем альтернативный, который заключается в создании библиотеки отдельно.
В любом случае, вот шаг за шагом, который сработал для меня. Обратите внимание, что это относится к цепочке Windows + Code :: Blocks + Allegro5 + DMD, предполагая, что компиляция проекта D в Code :: Blocks уже работает. В частности, это не применимы к другим компиляторам D, GDC и LDC.
Часть I
Создать код :: Блоки D проекта, удалите все примеры D источников, если они присутствуют.
Скачайте и скопируйте полное https://github.com/SiegeLord/DAllegro5 в каталог этого проекта, сохранив структуру каталогов.
Добавить все .D файлы рекурсивно, перейдя Project
- Add files recursively...
в Code :: Blocks (example.d и allegro5/*, сейчас это 49 файлов в общей сложности).
Если вы строите проект сейчас, он будет жаловаться, как:
||=== Build: Debug in [your-project-name] (compiler: Digital Mars D Compiler) ===| || Symbol Undefined _al_run_main| || Symbol Undefined _al_install_mouse| || Symbol Undefined _al_draw_triangle| ... ||=== Build failed: 26 error(s), 0 warning(s) (0 minute(s), 6 second(s)) ===|
То есть, компоновщик не может найти какой-либо из функций библиотеки. И вот улов: теперь вы должны получить двоичный файл Allegro5 в формате COFF .lib. И, насколько я могу судить, он не просто лежит вокруг нас в надежном месте: исполняемые файлы .lib, поставляемые разработчиками Allegro, находятся в формате OMF. Чтобы получить его, вам понадобится DLL Allegro, возможно, с основного сайта Allegro и программа для преобразования DLL-COFF, возможно, из сайта компилятора D. Процесс подробно описан ниже.
Часть II
Чтобы получить Allegro5 DLL, перейдите https://www.allegro.cc/files/ и скачать некоторые двоичную.
Чтобы получить конвертер, имейте imib.exe с сайта DigitalMars. Например, перейдите к http://www.digitalmars.com/download/freecompiler.html и загрузите основные утилиты оттуда (ссылка http://ftp.digitalmars.com/bup.zip).
Самый простой маршрут - это захватить единую DLL-библиотеку Allegro5, содержащую все функции библиотеки (в отличие от использования модулей, таких как allegro- *. Dll, allegro_font - *. Dll, allegro_primitives - *. Dll отдельно). Запуск такой команды, как implib /s dallegro5.lib allegro-5.0.10-monolith-mt.dll
, приведет к созданию файла .lib в формате COFF из существующего DLL-файла. Здесь параметр «/ s» необходим для добавления подчеркивания к именам функций, так что, например, «al_run_main» вызывается «_al_run_main» в файле .lib. Именование файлов DLL Allegro5 (что является монолитом, md или mt и т. Д.) Объясняется здесь: https://www.allegro.cc/manual/5/install/windows.html.
Теперь пришло время вернуться к нашему проекту Code :: Blocks.
Часть III
Копировать как DLL (аллегро-5.0.10-монолитно-mt.dll) и Lib (dallegro5.lib) в корне нашего Кодекса :: Blocks директории проекта. Немного беспорядок там, но вы можете переместить вещи в более подходящее место позже, когда у вас уже есть рабочая конфигурация.
В Code :: Blocks, перейдите к Project
- Build options...
- Linker settings
и добавить вновь созданный "dallegro5.lib" в список библиотек.
Восстановите проект и запустите его. Теперь все должно работать.
Пожалуйста скажите, если все вышеперечисленное работает для вас — и если нет, то шаг неудачу, и что именно пошло не так.
Глупый вопрос, но скопировали ли вы все файлы напрямую или сохранили структуру каталога git? Если base.d находится в корне вашего проекта, allegro5/base.d фактически не существует. – val
Не глупый вопрос. Я понятия не имею, что я делаю, к сожалению. Я скопировал папку allegro5 в папку проекта. Теперь я получаю разные ошибки. – dotnetN00b
@ValentinCLEMENT Теперь я получаю сообщение об ошибке: нераспознанное расширение файла a – dotnetN00b