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

标签 c++ ide mingw libstdc++ codelite

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

最佳答案

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

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

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

关于c++ - 为什么必须复制 libstdc++-6.dll 才能运行我的 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918798/

相关文章:

c++ - "cpp-bin"在linux中是什么意思?

c++ - 二叉搜索树递归插入

c++ - 为什么 mingw 4.4 说 <random> 需要 c++0x?

vba - 锁定或卡住 VBA 代码以防止编辑

c# - 什么是 Java 等同于 C# 的 Windows 窗体,用于轻松快速地构建 GUI 应用程序

ide - TextMate 可以找到匹配的开始和结束标签吗?

c - minGW 下 _rotl 性能较差

c++ - 继承问题 : Using header files and default constructor of the base class in the derived class

c - MinGW 上函数 'getaddrinfo' 的隐式声明

c++ - 关于CRTP静态多态的困惑