我正在尝试自学用 C++ 编程,并在安装了 g++ 的 Windows 上使用 Cygwin。一切都很顺利,直到我开始声明字符串变量。将字符串文字与 cout 一起使用不会引起任何问题,但是一旦我声明了一个字符串变量,程序将不再运行。
#include <iostream>
#include <string>
int main ()
{
std::string mystring = "Test";
std::cout << mystring;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
前面的代码编译没有问题,但运行时没有输出。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.
Run Code Online (Sandbox Code Playgroud)
从我设法收集的信息来看,这是 DLL 的某种入口点问题,但我可能完全错了。
有谁知道我做错了什么或我配置错误以及如何解决它?
当 Windows 无法加载 dll 文件时,会发出错误代码 0xc0000139。可能的原因是安装了多个不同版本的编译器。当您在 PC 上安装多个带有嵌入式 mingw 的软件(例如 Visual C、Vagrant、Omnet++)时,可能会发生这种情况。
对我来说,一个简单的解决方法是以不同的方式运行程序:我不是从 GUI 运行我的软件 (Omnet++),而是从 mingwenv.cmd 命令行运行它。这解决了问题。
更聪明的解决方案可以在 Rudolf 在 2017 年 9 月 18 日上午 11:35:13 的回答中找到。简而言之,他建议小心地临时更改系统的环境变量;因此,找到冲突的错误 dll,并将其删除。下面田斌的回答可以看图。解释一下。
好吧,我不确定问题到底是什么(如果有人知道我会很感激!),但我能够通过从 GCC 5.2.0 降级到 GCC 4.9.3 自己解决这个问题。
| 归档时间: |
|
| 查看次数: |
5154 次 |
| 最近记录: |