【发布时间】:2016-03-02 08:22:15
【问题描述】:
我正在尝试自学使用 C++ 编程,并在安装了 g++ 的 Windows 上使用 Cygwin。在我开始声明字符串变量之前,一切都很顺利。将字符串文字与 cout 一起使用不会导致任何问题,但是一旦我声明了字符串变量,程序将不再运行。
#include <iostream>
#include <string>
int main ()
{
std::string mystring = "Test";
std::cout << mystring;
return 0;
}
前面的代码编译没有问题,但是运行时没有输出。 GDB 为我提供了以下内容:
(gdb) run
Starting program: /cygdrive/c/Projects/CPP Test/string.exe
[New Thread 8416.0x2548]
[New Thread 8416.0x2510]
[New Thread 8416.0x1694]
[New Thread 8416.0x14f4]
[Thread 8416.0x1694 exited with code 3221225785]
[Thread 8416.0x14f4 exited with code 3221225785]
During startup program exited with code 0xc0000139.
据我所知,这是 DLL 的某种入口点问题,但我可能完全错了。
有谁知道我做错了什么或配置错误以及如何解决?
【问题讨论】:
-
您的代码编译良好,并在 Windows 10 上使用 gcc 4.8.1 为我提供了预期的输出“测试”。您是否在使用其他 C++ 程序时遇到同样的问题,或者它是否与您提供的代码有任何关系?另外,您使用哪些编译器标志来编译代码?
-
我没有玩太多,但我可以得到其他代码来编译。声明一个字符串变量似乎是导致问题的原因。我没有尝试声明任何其他类的变量,所以我不确定这是否是字符串或类的问题。我在使用 Cygwin 安装程序下载的 Win10 上使用 GCC 5.2.0-1。我不确定我使用什么标志,可能是默认标志。我用 g++ -g string.cpp -o string.exe 编译它
-
我将已安装的 GCC 版本更改为 4.9.3,我的程序现在可以正常编译和运行。多么奇怪……
-
您可能已经更新了 GCC,但将库保留在 4.9.something 版本,它们是单独的包。二进制兼容性很脆弱。