2013-05-24 2 views
1

В принципе у меня возникла проблема с приобретением Allegro binding (D + Allegro) для работы с Code: Blocks. Я думаю, что это проблема с настройками, но я не знаю, где. Так вот что я сделал до сих пор ...Почему CodeBlocks не позволяет мне скомпилировать этот пример программы Allegro?

Error: module base is in file 'allegro5\base.d' which cannot be read| 

Это ошибка, я получаю. Я использую Windows 7, DAllegro5, Code: Blocks и DML-компилятор DMD.

Код: Блоки работает. Составление регулярного проекта D. Я добавил файлы DAllegro5 в проект, но я продолжаю получать эту ошибку. Что еще я должен сделать, чтобы эта ошибка исчезла?

I followed the instructions here.

You have two options here. You can copy all the modules into your project, and just use them like that. Alternatively, you can compile the binding into a static library for convenience:

Я сделал жирным шрифтом. Просто скопировал фактические файлы .d в мой проект.

+0

Глупый вопрос, но скопировали ли вы все файлы напрямую или сохранили структуру каталога git? Если base.d находится в корне вашего проекта, allegro5/base.d фактически не существует. – val

+0

Не глупый вопрос. Я понятия не имею, что я делаю, к сожалению. Я скопировал папку allegro5 в папку проекта. Теперь я получаю разные ошибки. – dotnetN00b

+0

@ValentinCLEMENT Теперь я получаю сообщение об ошибке: нераспознанное расширение файла a – dotnetN00b

ответ

1

Путь «вы можете скопировать все модули в свой проект» на самом деле не намного проще, чем альтернативный, который заключается в создании библиотеки отдельно.

В любом случае, вот шаг за шагом, который сработал для меня. Обратите внимание, что это относится к цепочке Windows + Code :: Blocks + Allegro5 + DMD, предполагая, что компиляция проекта D в Code :: Blocks уже работает. В частности, это не применимы к другим компиляторам D, GDC и LDC.

Часть I

  1. Создать код :: Блоки D проекта, удалите все примеры D источников, если они присутствуют.

  2. Скачайте и скопируйте полное https://github.com/SiegeLord/DAllegro5 в каталог этого проекта, сохранив структуру каталогов.

  3. Добавить все .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

  1. Чтобы получить Allegro5 DLL, перейдите https://www.allegro.cc/files/ и скачать некоторые двоичную.

  2. Чтобы получить конвертер, имейте imib.exe с сайта DigitalMars. Например, перейдите к http://www.digitalmars.com/download/freecompiler.html и загрузите основные утилиты оттуда (ссылка http://ftp.digitalmars.com/bup.zip).

  3. Самый простой маршрут - это захватить единую 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

  1. Копировать как DLL (аллегро-5.0.10-монолитно-mt.dll) и Lib (dallegro5.lib) в корне нашего Кодекса :: Blocks директории проекта. Немного беспорядок там, но вы можете переместить вещи в более подходящее место позже, когда у вас уже есть рабочая конфигурация.

  2. В Code :: Blocks, перейдите к Project - Build options... - Linker settings и добавить вновь созданный "dallegro5.lib" в список библиотек.

  3. Восстановите проект и запустите его. Теперь все должно работать.

Пожалуйста скажите, если все вышеперечисленное работает для вас — и если нет, то шаг неудачу, и что именно пошло не так.