Mingw 和 C++ 向量

Mingw and c++ vectors

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

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

int main()
{

    cout<<"hello";
    return 0;
}

但是,当我声明一个 vector 时,hello 没有显示,程序似乎根本无法运行。

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

vector<int> a;

int main()
{

    cout<<"hello";
    return 0;
}

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

The procedure entry point _ZNKSt9baisc_ioslcSt11char_traitslcEEcvbEv could not be located in the dynamic link library

我搜索了 google 和堆栈溢出,但找不到解决我的问题的方法。

对于以后会阅读本文的任何人,我在环境路径变量中安装并定义了一个名为 gtk 的东西,它似乎与 MinGW 发生了冲突。写下一切 运行 都很顺利:

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

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

有几个解决方案:

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

执行这些操作应该可以解决您的问题。