Mingw和c ++载体[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在用c ++编写一个简单的小程序来测试向量。以下代码运行良好,并输出hello到cmd。我遵循的步骤是:g ++ filename.cpp来编译。\ a.exe来运行

#include <iostream>
#include <vector>
using namespace std;

int main()
{

    cout<<"hello";
    return 0;
}

但是,当我声明一个向量时,hello不会显示,程序似乎根本不起作用。

#include <iostream>
#include <vector>
using namespace std;

vector<int> a;

int main()
{

    cout<<"hello";
    return 0;
}

编译时我没有收到任何错误消息。但是当我在cmd外跑时,我确实得到了一条关于没有入口点的消息。

无法在动态链接库中找到过程入口点_ZNKSt9baisc_ioslcSt11char_traitslcEEcvbEv

我搜索谷歌和堆栈溢出但无法找到我的问题的解决方案。

对于稍后会阅读此内容的人,我在环境路径变量中安装了一个名为gtk的东西,并且它似乎与MinGW发生冲突。通过写作,一切顺利:

g ++ ex1.cpp -static-libgcc -static -static-libstdc ++

c++ mingw
1个回答
2
投票

问题可能是由于Windows尝试执行程序时找不到包含程序试图访问的功能的DLL(此处为_ZNKSt9baisc_ioslcSt11char_traitslcEEcvbEv)。

有一些解决方案:

  • 静态链接与C ++库(--static-libstdc ++)(这将直接将C ++库链接到您的可执行文件中(这可能会使您的程序更大))
  • 将libstdc ++ dll放在程序文件夹中(您应该能够在编译器安装文件夹中找到它)
  • 将libstdc ++ dll的路径添加到全局PATH变量(如果您想了解有关添加到PATH的更多信息,请参阅here),以便为计算机上运行的任何可执行文件找到dll

执行上述任何操作都可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.