“您可以将所有模块复制到您的项目中”路径实际上并不比另一种方法容易得多,即单独构建库。
无论如何,这是对我有用的一步一步。请注意,这适用于 Windows + Code::Blocks + Allegro5 + DMD 链,假设在 Code::Blocks 中编译 D 项目已经可以工作。具体来说,这不适用于其他 D 编译器、GDC 和 LDC。
第一部分
创建一个 Code::Blocks D 项目,删除所有示例 D 源(如果存在)。
下载并复制整个https://github.com/SiegeLord/DAllegro5到该项目的目录,保留目录结构。
Project
通过导航到 Code::Blocks 中的-递归添加所有 .d 文件Add files recursively...
(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)) ===|
也就是说,链接器找不到任何库函数。关键是:您现在应该获得 COFF .lib 格式的 Allegro5 二进制文件。据我所知,它并不完全存在于我们信任的地方:Allegro 开发人员提供的 .lib 二进制文件采用 OMF 格式。要获得它,您需要一个 Allegro DLL,可能来自 Allegro 的主站点,以及一个执行 DLL 到 COFF 转换的程序,可能来自 D 编译器的站点。下面详细介绍该过程。
第二部分
要获取 Allegro5 DLL,请访问https://www.allegro.cc/files/并下载一些二进制文件。
要获取转换器,请从 DigitalMars 获取 implib.exe。例如,访问http://www.digitalmars.com/download/freecompiler.html并从那里下载基本实用程序(链接是http://ftp.digitalmars.com/bup.zip)。
现在最简单的方法是获取一个包含所有库函数的 Allegro5 DLL(而不是单独使用诸如 allegro-*.dll、allegro_font-*.dll、allegro_primitives-*.dll 之类的模块)。运行诸如implib /s dallegro5.lib allegro-5.0.10-monolith-mt.dll
将从现有 DLL 文件生成 COFF 格式的 .lib 文件之类的命令。在这里,需要使用“/s”选项在函数名称前添加下划线,例如,“al_run_main”在 .lib 文件中称为“_al_run_main”。Allegro5 DLL文件的命名(什么是monolith、md或mt等)在这里解释:https ://www.allegro.cc/manual/5/install/windows.html 。
现在是我们回到 Code::Blocks 项目的时候了。
第三部分
将 DLL (allegro-5.0.10-monolith-mt.dll) 和 lib (dallegro5.lib) 复制到我们的 Code::Blocks 项目目录的根目录中。那里有点乱,但是当您已经有了工作配置时,您可以稍后将它们移动到更合适的位置。
在 Code::Blocks 中,导航到Project
- Build options...
-Linker settings
并将新创建的“dallegro5.lib”添加到库列表中。
重建项目并运行它。现在一切都应该正常了。
请说明以上所有方法是否对您有用——如果没有,失败的步骤是什么,究竟出了什么问题。