问题描述
所以我正在使用 allegro 4.4.2 版库创建一个 C++ 程序,我需要能够生成一个可执行包,我可以将其提交给课程讲师并在他的计算机上运行而不会出现问题。我正在使用 DevC++ 开发程序。如果我到目前为止正确理解这一点,我需要链接到快板的静态库,然后可执行文件应包含库信息,因此库本身不必包含在可执行包中。我还看到了一些关于生成可执行包的第三方工具的建议,但这些建议似乎更通用(不一定兼容快板?),我希望避免下载更多第三方软件。
我尝试链接到静态库 liballegro-4.4.2-monolith-static-mt.a,但由于某种原因,当我这样做时,我得到了大量未定义的参考编译时错误。我已经读到有必要在项目中包含 #define ALLEGRO_STATICLINK,我在主源文件的顶部有这个声明,但我不确定我是否打算在项目选项中的某个地方定义它?>
任何可以帮助我解决问题的指南或资源链接都将不胜感激!我刚开始接触 C++ 编程,开始学习面向对象的编程方法,我仍然偶尔会在基础知识上挣扎,所以在此先感谢您的帮助!
背景故事(如果感兴趣/相关?):我正在学习游戏 AI 编程课程,我们需要为此创建一些示例程序来演示 AI 算法。该课程指定 Java,但我最熟悉 C++,课程讲师说这很好,但我必须能够向他提交一个可执行文件,他可以在他的计算机上毫无问题地运行该可执行文件。为了最好地实现课程要求,我觉得 allegro 库(我已经安装了它)会很有帮助,主要用于在屏幕上绘制图形等。
解决方法
所以我最终使用了我的程序的动态链接版本,并包含了适当的 .dll 文件,结果证明工作量比我想象的要少得多。
基本上我只需要确保 bin 文件夹中的 allegro-4.4.2-md.dll 包含在可执行文件的文件夹中。然后我将包(.exe 编译文件和所需的支持文件,如位图声音文件等)发送给几个朋友并让他们尝试运行它。然后他们从他们的计算机上给了我“Test.exe cannot be run ****.dll cannot be found”的警告。
我在我的游戏文件夹中搜索了他们收到警告的 dll 文件的确切名称,瞧,它现在似乎可以在发送到的任何 PC 上执行。