为什么必须复制libstdc ++-6.dll才能运行我的C ++程序?

时间:2018-12-25 01:50:36

标签: c++ ide mingw libstdc++ codelite

我刚刚开始使用CodeLite IDE学习c ++。一切工作正常,但是我遇到了一个问题,程序可以编译,但立即退出。我可以通过将Minst的libstdc ++-6.dll文件复制到与exe文件相同的文件夹中来修复它。尽管我不介意这样做,但我想知道是否可以让CodeLite在每个项目中自动包含此文件。

1 个答案:

答案 0 :(得分:2)

您的程序崩溃,因为该程序找不到所需的依赖关系(在本例中为libstdc ++)。对于某些背景,您可以有两种类型的依赖关系:静态和动态。静态依赖项已内置到您的程序中。动态依赖项依赖于在运行时加载(Windows调用这些DLL)。

正如评论中提到的drescherjm一样,操作系统使用 path 变量来存储依赖项,命令行程序路径和其他信息。只需进入Windows搜索按钮,并输入“环境变量”,然后单击“系统变量”(以使dll在系统范围内可访问)或“用户变量”(以使dll仅可用于您的帐户)。然后,您可以添加一个新的文件夹路径,也可以将其复制到现有的路径。请注意,Windows还将搜索与可执行文件相同的目录(这就是为什么复制DLL起作用的原因)。

请注意,如果您在线分发程序,则还需要确保用户具有那些动态依赖项。您可以将DLL包含在捆绑包中(当心许可),或告诉他们在哪里可以找到它。