执行用 C++ 编写的 .exe 的问题(使用 mingw 编译器)

Posted

技术标签:

【中文标题】执行用 C++ 编写的 .exe 的问题(使用 mingw 编译器)【英文标题】:Issue with executing .exe written in C++ (using mingw compiler) 【发布时间】:2020-01-07 06:42:57 【问题描述】:

我是编程新手,我正在尝试使用 C++ Primer(第 5 版)学习 C++。我已经编写了直接来自书中的代码。问题是在尝试执行 .exe 结果并弹出此提示时

无法在dll中定位程序入口点_ZNKSt9basic_ioslcSt11char_traitslcEEcvbEv

.cpp

#include <iostream>

main ()

    int sum = 0, val = 0;

    while (std::cin >> val) 
        sum += val;

    std::cout << "The sum is: " << sum << std::endl;

    return 0;

【问题讨论】:

您没有正确构建它或您的编译器安装错误。 问题不在于您发布的 C++ 代码,而在于您的编译器配置。我建议您在问题中指定您正在使用的编译器并在问题中设置适当的标签。例如,如果您使用的是 gcc,则将其标记为“gcc”。 正如@AndreasWenzel 所写,您可能正在编译库而不是 .exe,或者使用不正确的运行时,这与您的代码无关。如果您使用的是 IDE,请确保在创建项目时选择“控制台/dos 应用程序”。 您的路径中可能有一个正在加载的 dll,而不是编译器期望的运行时 dll 你的书真的没有intmain 返回类型吗? 【参考方案1】:

查看安装 mingw 编译器的目录。 在“bin”目录中,您应该可以找到几个“*.dll”文件,如“libwinpthread-1.dll”、“ligstdc++-6.dll”等...

这些库是执行您的应用程序所必需的,因为 mingw 需要一些平台包装魔法(它是 linux 的 gcc 端口)。

尝试将这些 dll 复制到“*.exe”所在的同一文件夹中。

如果这没有帮助: 该错误消息有点令人困惑,因为我希望它报告缺少 dll 文件而不是缺少过程。在这种情况下,您的编译器安装似乎已损坏,或者如前所述,您的构建环境设置不正确。您使用的是哪个 mingw 版本,您从哪里获得的?

【讨论】:

将 dll 文件复制到编译文件夹中似乎可行。我不完全确定为什么 dll 位于其初始位置时问题仍然存在。我会假设按照 minGW 网站的环境设置可以避免这样的问题?

以上是关于执行用 C++ 编写的 .exe 的问题(使用 mingw 编译器)的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 代码调试 C++ exe

通过 C++ dll 或 C++ exe 编写 C# GUI

py2exe 可执行文件以看似随机的方式崩溃

C++ 可执行文件仅从 Visual Studio 启动

Java可以编写能在WINDOWS下的exe程序吗 就是可执行文件

怎么查看用C++ builder编写的程序都调用了哪些dll文件,谢谢!