基本上我遇到了使用Allegro绑定(D + Allegro)来处理Code:Blocks的问题。 我认为这是一个设置问题,但我不知道在哪里。 所以这就是我到目前为止所做的......
Error: module base is in file 'allegro5\base.d' which cannot be read|
这是我一直在犯的错误。我正在使用Windows 7,DAllegro5,代码:Blocks和D语言DMD编译器。
代码:块有效。编译常规D项目有效。我已将DAllegro5文件添加到项目中,但我一直收到此错误。我还应该做些什么才能让这个错误消失?
I followed the instructions here.
这里有两种选择。 您可以将所有模块复制到项目中,然后就这样使用它们。或者,为方便起见,您可以将绑定编译到静态库中:
我做了粗体。只是将实际的.d文件复制到我的项目中。
答案 0 :(得分:1)
“你可以将所有模块复制到你的项目中”路径实际上并不比另一个模块更容易,也就是单独构建库。
无论如何,这是一个对我有用的步骤。请注意,这适用于Windows + Code :: Blocks + Allegro5 + DMD链,假设在Code :: Blocks中编译D项目已经有效。具体来说,这不适用于其他D编译器,GDC和LDC。
第一部分
创建一个Code :: Blocks D项目,删除所有示例D源(如果它们存在)。
将整个https://github.com/SiegeLord/DAllegro5下载并复制到该项目的目录中,保留目录结构。
通过导航到Code :: Blocks中的Project
- Add files recursively...
来递归添加所有.d文件(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-to-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项目的时候了。
第III部分
将DLL(allegro-5.0.10-monolith-mt.dll)和lib(dallegro5.lib)复制到Code :: Blocks项目目录的根目录中。那里有点混乱,但是当你已经有了工作配置时,你可以稍后将事情移到更合适的位置。
在Code :: Blocks中,导航至Project
- Build options...
- Linker settings
并将新创建的“dallegro5.lib”添加到库列表中。
重建项目并运行它。现在一切都应该正常工作。
请告诉我以上所有内容是否适合您 - 如果不是,那么失败的步骤是什么,以及究竟出了什么问题。