我刚开始学习 C++ 类(class),正在使用 MinGW 进行编译(我开始做 K&R,所以已经为 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
和 friend 。
执行后,您的二进制文件将在特定位置查找这些 DLL。通常错误是关于缺少 DLL,但在您的情况下,这些 DLL 的错误版本似乎在您不知情的情况下安装在您的计算机上。 (例如 32 位与 64 位)
有两种可能的解决方案:
-static-libgcc -static-libstdc++
到您的程序到链接器。这将增加二进制文件的大小,并且每个二进制文件都将包含相同例程的冗余拷贝。但是,您将获得一个独立的二进制文件。 关于使用 MinGW 找不到 C++ 过程入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505719/