MinGW 在 NetBeans 上完全被窃听

Posted

技术标签:

【中文标题】MinGW 在 NetBeans 上完全被窃听【英文标题】:MinGW completely bugged on NetBeans 【发布时间】:2014-03-17 20:56:16 【问题描述】:

以下代码不应产生错误:

    #include <cstdlib>
    #include <cstdio>
    #include <iostream>

    using namespace std ;

    int main ( int argc , char** argv )
    
        int n ;
        cin >> n ;
        cout << n ;
        return 0 ;
    

在 Netbeans 上运行 MinGW/Msys 时却得到“运行失败(退出值 -1,073,741,511,总时间:46 毫秒)”。有什么建议,比如切换回 Cygwin?

【问题讨论】:

这可能与共享库/运行配置有关。可以手动运行程序吗? 请详细说明“手动运行程序” 代码完全没有问题,所以问题可能是你的MinGW安装。尝试重新安装它(和/或 Netbeans)。 我已经这样做了。在安装 MinGW 之前,我使用的是 Cygwin。然后我完全卸载了 Cygwin,安装了 MinGW,但它没有用。然后我重新安装它并回到同一个地方。对于两个编译器,我都按照 Netbeans 网站上的说明进行操作 您可以手动运行崩溃程序的可执行文件吗? 【参考方案1】:

如果您想在 Microsoft Windows 操作系统下开发 C++,我建议使用MinGW Distro。它附带了一个相当新的 GCC 版本和 Boost 库。

NetBeans IDE 在构建环境设置方面非常挑剔。例如。它不适用于所有版本的make(例如,我们必须将make.exe 与MSYS 和mingw32-make.exe 与MinGW 区分开来)并且有problems regarding the used Java Runtime Enviroment (JRE)。

使用以下屏幕截图中显示的设置,您应该能够使用 MinGW Distro 和 NetBeans 8 构建您的示例。我建议配置make.exe 文件的绝对路径,但添加Microsoft Windows 环境变量PATH 的路径。否则您可能会遇到构建错误。

如果您想使用“默认”MinGW 分发版,这两篇博文可能会有所帮助:

    Installing Minimum GNU for Windows (MinGW) Configure NetBeans IDE for Minimum GNU for Windows (MinGW)

我希望这对其他人也有帮助。


与您的问题无关:Don't use using namespace std:

#include <iostream>

int main(int argc, char** argv) 
  int n;
  std::cin >> n;
  std::cout << n;

  return 0;

【讨论】:

【参考方案2】:

我遇到了同样的问题(退出代码为 -1,073,741,511),所以虽然问题过时了,​​但我还是在这里为遇到问题的其他人发布此问题。

    手动运行程序的可执行文件。您可能会收到诸如“过程入口点 __gx_personality_v0 不能位于动态库 libstdc++-6.dll 中”之类的错误。 (OP 已在评论中确认了这一点。) 上述错误消息中提到的 .dll 文件没有被链接,或者链接不正确。需要链接的.dll 的正确版本是...\MinGW\bin 目录中的那个。在 Windows 中,您可以通过在命令提示符中键入 where libstdc++-6.dll 来检查正在链接的 .dll 文件;列出的第一个结果将是链接的文件。如果您已经在此处看到 ...\MinGW\bin\libstdc++-6.dll 作为第一个结果,那么我下面的修复对您没有帮助。 如果您看到消息“信息:找不到给定模式的文件。”,则需要将 ...\MinGW\bin 添加到您的 %PATH% 变量中。 (OP 已经确认这不是问题。) 我遇到的问题是我安装的程序有自己的(可能已过时)版本的libstdc++-6.dll,它位于我的 %PATH% 变量中也包含的文件夹中,位于 ...\MinGW\斌。这意味着这个其他 .dll 文件在执行期间被拾取并链接到。这可以通过编辑 %PATH% 变量来解决,以确保 ...\MinGW\bin 条目位于所有其他也具有 .dll 文件版本的目录之前。

编辑:另一个选项是在程序编译时静态链接 .dll,或者将正确的 .dll 副本放在程序可执行目录中。但是,这些修复都不是“全局”的,需要为每个项目单独完成。

希望这会有所帮助!

【讨论】:

以上是关于MinGW 在 NetBeans 上完全被窃听的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MinGW 在 Linux 上构建 Crypto++ 库?

MingW 报告 Netbeans + Qt 中缺少 .dll 文件

使用 MinGW GCC 4.5.0 配置 NetBeans 6.9 时遇到问题

为什么Qt的libstdc ++版本 - 6.dll有效,但不是MinGW?

Netbeans 首次编译器构建错误

如何在 Windows 上为 NetBeans 和 gcc 添加库包含路径?