C++ minGW 找不到过程入口点

C++ Procedure Entry Point Not Found with MinGW

本文关键字:入口 过程 找不到 minGW C++      更新时间:2023-10-16

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

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

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

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

提前感谢您的帮助!

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

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

有两种可能的解决方案:

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