C++;在MinGW中找不到程序入口点 我刚刚开始了C++课程,我用MinGW编译(我开始做K& R,所以它已经为C设置了)。每当我编译包含或使用任何库的文件时,都会出现以下错误:

C++;在MinGW中找不到程序入口点 我刚刚开始了C++课程,我用MinGW编译(我开始做K& R,所以它已经为C设置了)。每当我编译包含或使用任何库的文件时,都会出现以下错误:,c++,mingw,libstdc++,C++,Mingw,Libstdc++,“在动态链接库中找不到过程入口点…(这只是一个很长的加扰点…)(我正在编译的文件的路径)” 在Google上搜索之后,我尝试将libstdc++-6.dll放在C:\Windows\System32中,将C:\MinGW\bin作为路径的第一优先级,并将libstdc++-6.dll放在与我编译的.cpp文件相同的文件夹中 唯一的解决方案是将其复制到我正在编译的.cpp文件的文件夹中,但我希望避免以后每次都这样做 提前感谢您的帮助 使用MinGW构建时,生成的二进制文件将需要libstdc++-

“在动态链接库中找不到过程入口点…(这只是一个很长的加扰点…)(我正在编译的文件的路径)”

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

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


提前感谢您的帮助

使用MinGW构建时,生成的二进制文件将需要
libstdc++-6.dll
(以及其他一些文件,如
libwinpthread-1.dll
)。它们包含标准C++库,例如<代码> STD::String 和朋友。 执行时,二进制文件将在特定位置查找这些DLL。通常错误与缺少DLL有关,但在您的情况下,这些DLL的错误版本似乎是在您不知情的情况下安装在您的计算机上的某个位置。(例如32位对64位)

有两种可能的解决方案:

  • 找到MinGW工具链附带的正确DLL,并将它们放在本地目录中。(本地目录是可执行文件搜索DLL的第一个位置。)您必须随生成一起提供DLL的副本
  • 链接> < />强>标准C++库<强>静态< /强>,通过传递代码>静态LBGCC静态LIbSTDC++/<代码>链接器。这将增加二进制文件的大小,并且每个二进制文件将包含相同例程的冗余副本。但是,您将得到一个自包含的二进制文件
-static libgcc-static libstdc++
添加到编译器标志中。谢谢!你能解释一下刚才做的是什么吗?这些标志使GCC静态地连接了标准库(分别为C和C++)而不是动态地连接。也就是说,
.dll
s中的内容现在位于
.exe
中(它的大小可能增加了几兆字节)。哦,好吧!再次感谢你!我可以做些什么来避免每次都静态链接它吗?不可以,除非您想用
.exe
.dll
复制到文件夹中。我假设您是从命令行编译的,所以我建议您找到一个合适的IDE。那么你就不会在意你的旗帜列表有多长了。