1

基本上我在让 Allegro 绑定(D + Allegro)与 Code:Blocks 一起工作时遇到问题。我认为这是一个设置问题,但我不确定在哪里。所以这就是我到目前为止所做的......

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

这是我不断收到的错误。我正在使用 Windows 7、DAllegro5、Code:Blocks 和 D 语言 DMD 编译器。

代码:块工作。编译一个常规的 D 项目是可行的。我已将 DAllegro5 文件添加到项目中,但我不断收到此错误。我还应该怎么做才能让这个错误消失?

我按照这里的说明进行操作。

您在这里有两个选择。您可以将所有模块复制到您的项目中,然后像这样使用它们。或者,为方便起见,您可以将绑定编译到静态库中:

我做了加粗的。只是将实际的 .d 文件复制到我的项目中。

4

1 回答 1

1

“您可以将所有模块复制到您的项目中”路径实际上并不比另一种方法容易得多,即单独构建库。

无论如何,这是对我有用的一步一步。请注意,这适用于 Windows + Code::Blocks + Allegro5 + DMD 链,假设在 Code::Blocks 中编译 D 项目已经可以工作。具体来说,这不适用于其他 D 编译器、GDC 和 LDC。

第一部分

  1. 创建一个 Code::Blocks D 项目,删除所有示例 D 源(如果存在)。

  2. 下载并复制整个https://github.com/SiegeLord/DAllegro5到该项目的目录,保留目录结构。

  3. 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 编译器的站点。下面详细介绍该过程。

第二部分

  1. 要获取 Allegro5 DLL,请访问https://www.allegro.cc/files/并下载一些二进制文件。

  2. 要获取转换器,请从 DigitalMars 获取 implib.exe。例如,访问http://www.digitalmars.com/download/freecompiler.html并从那里下载基本实用程序(链接是http://ftp.digitalmars.com/bup.zip)。

  3. 现在最简单的方法是获取一个包含所有库函数的 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 项目的时候了。

第三部分

  1. 将 DLL (allegro-5.0.10-monolith-mt.dll) 和 lib (dallegro5.lib) 复制到我们的 Code::Blocks 项目目录的根目录中。那里有点乱,但是当您已经有了工作配置时,您可以稍后将它们移动到更合适的位置。

  2. 在 Code::Blocks 中,导航到Project- Build options...-Linker settings并将新创建的“dallegro5.lib”添加到库列表中。

  3. 重建项目并运行它。现在一切都应该正常了。

请说明以上所有方法是否对您有用——如果没有,失败的步骤是什么,究竟出了什么问题。

于 2014-02-28T21:54:48.313 回答