gpt4 book ai didi

c++ - Visual Studio C++ 项目中所需的 DLL

转载 作者:行者123 更新时间:2023-11-28 02:11:46 24 4
gpt4 key购买 nike

我进行了一些搜索,发现了与我的问题性质相似的问题,但没有一个问题能够切中要害我遇到的问题。

我正在 Visual Studio(使用 Allegro 5 库)中制作 C++ 游戏,但在其他计算机上运行时遇到困难。我很清楚“此计算机中缺少 MSVCR##.dll”问题,但我想知道为什么我无法运行我的 Release 版本,因为我缺少 MSVCR##'D' .dll 在某台计算机上,当时我的印象是“D”后缀的 .dll 是运行调试器所必需的。我已经在配置管理器中检查了发布build设置,并将“生成调试信息”设置为“否”,我认为这是我唯一需要做的事情。我想我的问题是是否需要配置任何其他设置以确保我的发布版本不在寻找 MSVCR##D.dll。提前感谢任何有信息的人!

最佳答案

您对 *D 库的使用有点困惑。它们确实用于调试构建,但调试构建与发布构建在多个方面有所不同。对于初学者,默认情况下调试版本带有一个包含所有函数名称的 *.PDB 文件(这是您的“生成调试信息”选项)。调试器查看 .PDB 文件以找到崩溃站点的可读名称。

另一个调试选项是不内联代码——这样可以保持命名函数的完整性。内联可能会将单个函数放入其他三个函数中,这会使调试变得有点复杂。

最后,调试 CRT 包括针对错误参数执行额外错误检查的函数。例如,许多函数在传递空指针时会表现出未定义的行为。 Debug 库将捕获其中的很多,而 Release 版本假设您只传递有效的指针。

现在 DLL 可以相互引用;有一个完整的依赖关系图。这就是 Dependency Walker 工具存在的原因:它找出哪个 DLL 的 rqeuire 和其他 DLL 的请求,这将告诉您为什么需要 *D 版本。

关于c++ - Visual Studio C++ 项目中所需的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35422647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com