【问题标题】:Running .exe file out of CodeBlocks从 CodeBlocks 运行 .exe 文件
【发布时间】:2021-11-20 11:39:51
【问题描述】:

我正在编写我的控制台应用程序项目,一切正常,直到我尝试从 CodeBlocks 运行 .exe 文件。

当我尝试通过在 CodeBlocks 上编译来运行我的应用程序时,我的程序可以正确运行并返回正确的结果。换句话说,当我尝试运行 .exe 文件时,程序运行时,我可以键入输入,但在返回最终输出之前,我的控制台正在关闭。

我将 MinGW 中 bin 文件夹中的所有 .dll 文件添加到程序所在的文件夹中,但没有帮助。我需要在这个文件夹中添加更多内容还是需要在编译程序时进行更改?我想让这个程序可以在没有 CodeBlocks 的情况下在另一个人的计算机上运行。

我正在使用 Code::Blocks 17.12 和 C++ 语言。

【问题讨论】:

  • “我的控制台崩溃了” 你的意思是它关闭了吗?这不是一回事。
  • 是的,它关闭并且不返回最终输出。
  • 仅仅因为 C++ 程序在以一种方式执行时产生正确的结果并不能保证它没有错误。那是因为undefined behavior means anything can happen,其中包括程序在以某种特定方式执行时无法正确运行和崩溃。当然,C++ 程序中潜在或可能的错误的数量是无限的。如果不显示minimal reproducible example,任何人都不太可能告诉您更多信息。
  • Code::Blocks 将调试器附加到控制台窗口,它(可选)在程序终止后保持控制台窗口可见。直接运行程序(例如通过单击可执行文件的快捷方式)不会将调试器附加到控制台窗口,因此当您的程序终止时控制台窗口会立即关闭。由于各种原因,运行带有调试器的生产程序并不是一个好主意。一种常见的技术是程序刷新控制台输出,然后在生成所有输出后读取输入,例如在main() 返回之前。
  • “是的,它关闭并且不返回最终输出。” 那么这不是崩溃。该程序可能正常完成并关闭。要查看最终输出,可以从控制台运行它,或者在打印后读取一些虚拟输入,或者在打印后添加 std::system("pause");(仅限 Windows)。

标签: c++ dll compilation console-application


【解决方案1】:

在程序末尾添加getchar()system("pause")。 窗口关闭是因为程序已结束执行,控制台应用程序通常在终端内运行,您仍然可以在终端中看到程序输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2020-03-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多