使用MinGW找不到C ++过程入口点

时间:2018-01-29 16:22:46

标签: c++ mingw libstdc++

我刚刚开始了一个C ++课程并使用MinGW进行编译(我开始做K& R所以已经设置了C)。每当我编译包含或使用任何库的文件时,它都会给我以下错误:

"程序入口点......(这只是一个长期看起来很难看的东西)无法在动态链接库中找到...(我正在编译的文件的路径) "

在谷歌搜索之后,我尝试在C:\ Windows \ System32中放置libstdc ++ - 6.dll,将C:\ MinGW \ bin作为PATH中的第一优先级,并将libstdc ++ - 6.dll放在同一文件夹中作为我正在编译的.cpp文件。

唯一的解决方案是将其复制到我正在编译的.cpp文件的文件夹中,但我希望将来不要每次都这样做。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用 MinGW 构建时,生成的二进制文件将需要 libstdc++-6.dll(以及其他一些,如 libwinpthread-1.dll)。它们包含标准 C++ 库,例如 std::string 和朋友。

执行后,您的二进制文件将在特定位置查找这些 DLL。通常错误是关于缺少 DLL,但在您的情况下,这些 DLL 的错误版本似乎在您不知情的情况下安装在您的计算机上。 (例如 32 位与 64 位)

有两种可能的解决方案:

  • 找到您的 MinGW 工具链附带的正确的 DLL,并将它们放在本地目录中。 (本地目录是可执行文件搜索 DLL 的第一个位置。)您必须随构建一起提供它们的副本。
  • 通过将 -static-libgcc -static-libstdc++ 传递给链接器,
  • 链接标准 C++ 库静态到您的程序。这将增加二进制文件的大小,并且每个二进制文件都将包含相同例程的冗余副本。但是,您将获得一个独立的二进制文件。