首页 > 解决方案 > Mingw 和 c++ 向量

问题描述

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

#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

解决方案


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

有几个解决方案:

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

做任何这些应该可以解决您的问题。


推荐阅读