4

我在 C++ 中使用向量时遇到问题。我正在 Windows + NetBeans 上使用 MinGW。

以下代码:

#include <vector>
using namespace std;
int main(int argc, char** argv){
  vector<int> vec;
  return 0;
}

它编译时没有任何错误,但运行时它总是以退出值 -1.073.741.511 或退出值 127 失败(这意味着 ERROR_PROC_NOT_FOUND)。

直接启动 exe 会显示如下错误消息:

entrypoint '__gx_personality_v0' not fount in 'libstdc++-6.dll'.

我已经尝试-lstdc++

#include <cstdlib>

那么问题是什么,我该如何解决呢?

网豆输出:

"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/c/Users/Josch/CppApplication_1'
"/C/MinGW/msys/1.0/bin/make.exe"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW1-Windows/cppapplication_1.exe
make.exe[2]: Entering directory `/c/Users/Josch/CppApplication_1'
mkdir -p build/Debug/MinGW1-Windows
rm -f build/Debug/MinGW1-Windows/main.o.d
g++    -c -g -MMD -MP -MF build/Debug/MinGW1-Windows/main.o.d -o build/Debug/MinGW1-Windows/main.o main.cpp
mkdir -p dist/Debug/MinGW1-Windows
g++     -o dist/Debug/MinGW1-Windows/cppapplication_1 build/Debug/MinGW1-Windows/main.o 
make.exe[2]: Leaving directory `/c/Users/Josch/CppApplication_1'
make.exe[1]: Leaving directory `/c/Users/Josch/CppApplication_1'

BUILD SUCCESSFUL (total time: 4s)

编辑:当然 main 应该返回 int - 修复并添加 using namespace std;

4

1 回答 1

5

好的,我找到了解决方案。

问题是安装MiKTeX已添加到PATH变量中。所以 Windows 链接到不同版本的libstdc++-6.dll.

最后我找到了两个解决方案:

  1. 编译-static-libstdc++以避免链接错误的 DLL。

  2. 复制libstdc++-6.dllMinGW\bin与已编译的 EXE 相同的文件夹中。这将导致 Windows 始终链接正确版本的 DLL。

尽管问题非常具体,但我希望它也对其他人有所帮助。;)

于 2013-07-26T07:44:20.643 回答