Ide 为什么不是';t代码块让我编译这个示例Allegro程序?

Ide 为什么不是';t代码块让我编译这个示例Allegro程序?,ide,d,codeblocks,allegro,allegro5,Ide,D,Codeblocks,Allegro,Allegro5,基本上,我在让Allegro绑定(D+Allegro)处理代码块时遇到了一个问题。 我认为这是一个设置问题,但我不确定在哪里。 这就是我到目前为止所做的 Error: module base is in file 'allegro5\base.d' which cannot be read| 这是我一直犯的错误。我使用的是Windows7、DAllegro5、Code:Blocks和D语言DMD编译器 代码:积木工程。编写一个定期的D项目工作。我已将DAllegro5文件添加到项目中,但我一直

基本上,我在让Allegro绑定(D+Allegro)处理代码块时遇到了一个问题。 我认为这是一个设置问题,但我不确定在哪里。 这就是我到目前为止所做的

Error: module base is in file 'allegro5\base.d' which cannot be read|
这是我一直犯的错误。我使用的是Windows7、DAllegro5、Code:Blocks和D语言DMD编译器

代码:积木工程。编写一个定期的D项目工作。我已将DAllegro5文件添加到项目中,但我一直收到此错误。我还应该做些什么来消除这个错误

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

我做了大胆的尝试。只是将实际的.d文件复制到我的项目中。

事实上,“您可以将所有模块复制到您的项目中”路径并不比另一个路径简单,即单独构建库

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

第一部分

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

  • 下载整个项目并将其复制到该项目的目录中,保留目录结构

  • 通过导航到
    Project
    -
    在code::Blocks中递归添加文件…
    以递归方式添加所有.d文件(例如.d和allegro5/*,目前总共是49个文件)

  • 如果您现在构建项目,它会抱怨,例如:

    ||===编译:在[您的项目名称]中调试(编译器:Digital Mars D编译器)===|
    ||符号未定义_al_run_main|
    ||符号未定义\u al\u安装\u鼠标|
    ||符号未定义\u al\u绘制\u三角形|
    ...
    ||===构建失败:26个错误,0个警告(0分钟,6秒))===|

    也就是说,链接器找不到任何库函数。这里有一个问题:您现在应该获得COFF.lib格式的Allegro5二进制文件。就我所知,它并不是我们可以信赖的地方:Allegro开发人员提供的.lib二进制文件是OMF格式的。要获得它,您需要一个Allegro DLL,可能来自Allegro的主站点,以及一个执行DLL到COFF转换的程序,可能来自D编译器的站点。下面详细介绍了该过程

    第二部分

  • 要获得Allegro5 DLL,请转到并下载一些二进制文件

  • 要获取转换器,请从DigitalMars获取implib.exe。例如,转到并从那里下载基本实用程序(链接为)

  • 现在最简单的方法是获取一个包含所有库函数的Allegro5 DLL(而不是分别使用allegro-*.DLL、allegro\u font-*.DLL、allegro\u primitives-*.DLL等模块)。运行命令(如
    implib/s dallegro5.lib allegro-5.0.10-monolith-mt.dll)将从现有dll文件生成COFF格式的.lib文件。在这里,需要“/s”选项在函数名前加下划线,例如,在.lib文件中,“al_run_main”被称为“_al_run_main”。Allegro5 DLL文件的命名(什么是monolith、md或mt等)在这里解释:

  • 现在是我们回到代码::块项目的时候了

    第三部分

  • 将DLL(allegro-5.0.10-monolith-mt.DLL)和lib(dallegro5.lib)复制到Code::Blocks项目目录的根目录中。这里有点乱,但是你可以在以后,当你已经有了一个工作配置的时候,把东西移到一个更合适的位置

  • 在Code::Blocks中,导航到项目-构建选项…-链接器设置并将新创建的“dallegro5.lib”添加到库列表中

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

  • 请说明上述所有方法是否对您有效,如果不起作用,失败的步骤是什么,到底出了什么问题。

    事实上,“您可以将所有模块复制到您的项目中”路径并不比另一个路径简单多少,即单独构建库

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

    第一部分

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

  • 下载整个项目并将其复制到该项目的目录中,保留目录结构

  • 通过导航到
    Project
    -
    在code::Blocks中递归添加文件…
    以递归方式添加所有.d文件(例如.d和allegro5/*,目前总共是49个文件)

  • 如果您现在构建项目,它会抱怨,例如:

    ||===编译:在[您的项目名称]中调试(编译器:Digital Mars D编译器)===|
    ||符号未定义_al_run_main|
    ||符号未定义\u al\u安装\u鼠标|
    ||符号未定义\u al\u绘制\u三角形|
    ...
    ||===构建失败:26个错误,0个警告(0分钟,6秒))===|

    也就是说,链接器找不到任何库函数。这里有一个问题:您现在应该获得COFF.lib格式的Allegro5二进制文件。就我所知,它并不是我们可以信赖的地方:Allegro开发人员提供的.lib二进制文件是OMF格式的。要获得它,您需要一个Allegro DLL,可能来自Allegro的主站点,以及一个执行DLL到COFF转换的程序,可能来自D编译器的站点。下面详细介绍了该过程

    第二部分

  • 要获取Allegro5 DLL,请转到