我在 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++
and
#include <cstdlib>
那么问题是什么以及如何解决呢?
Netbeans 输出:
"/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 命名空间 std;
好吧,我找到了解决方案。
问题是安装MiKTeX
被添加到PATH
多变的。因此 Windows 链接到不同版本libstdc++-6.dll
.
最后我找到了两个解决方案:
编译用-static-libstdc++
以避免链接错误的 DLL。
Copy libstdc++-6.dll
from MinGW\bin
到与编译的 EXE 相同的文件夹中。这将导致 Windows 始终链接正确版本的 DLL。
虽然问题很具体,但我希望它对其他人也有帮助。 ;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)