【问题标题】:How do I run C++ program in Powershell, just like CMD?如何在 Powershell 中运行 C++ 程序,就像 CMD 一样?
【发布时间】:2017-12-30 18:55:31
【问题描述】:

与在 CMD 中一样,要运行 C++ 程序,我使用命令 g++ filename.cpp,然后使用命令 a.exe 运行它,这会在 CMD 本身中打开输出。如何使用 PowerShell 做这样的事情?我无法通过a.exe 的简单命令打开文件。我做错了吗?

【问题讨论】:

  • 老实说,我已经被淘汰了。我在 powershell 中运行 cmd,然后以 cmd 方式执行旧的 cmd。
  • 试试这个./a
  • 从 CMD 运行 a.exe 不会输出到“CMD 本身”。 cmd.exe、powershell.exe 和 a.exe 是控制台应用程序,它们将在启动时继承或创建控制台,该控制台由控制台子系统宿主进程 conhost.exe 的实例单独托管。如果您从 cmd.exe 运行 a.exe,它将继承 cmd.exe 的控制台作为其 StandardInputStandardOutputStandardError 文件句柄——而“CMD 本身”的单线程只会阻塞,直到.exe 退出。
  • CMD 自动搜索工作目录的行为是不安全的。您可以通过设置环境变量NoDefaultCurrentDirectoryInExePath 来修复它。使用此设置,您还必须使用.\a 在 CMD 中运行 a.exe。但是工作目录仍然可以显式添加到PATH 为“.”,这样您就可以更好地控制它在整体搜索中的位置。
  • 大家似乎都注意到了你没有发布你的错误信息。我相信他们的猜测是正确的(PowerShell 默认不在当前目录中运行可执行文件),但你不应该让别人猜测。 (请记住,没有人可以看到您的屏幕。)

标签: c++ powershell gcc cmd


【解决方案1】:

最佳实践是使用调用运算符并引用命令。

& ".\a.exe" p1 p2 p3

PowerShell 还将允许使用 / 作为路径分隔符。

& "./a.exe" p1 p2 p3 "p4 with space"

【讨论】:

  • .\a.exe 周围的引号不是必需的,因为它不包含任何空格。
【解决方案2】:

通过在 PowerShell 上运行 g++ filename.cpp 它默认生成一个 .exe 文件 运行 a.exe 会报错

所以请遵循这些命令

g++ 文件名.cpp -o 文件名.exe

文件名.exe

【讨论】:

    【解决方案3】:

    [工作 100%] 来自 Windows 用户。 打开创建 file.cpp 的终端 (PowerShell)。

    1. g++ file.cpp //它将文件编译成a.exe
    2. .\a.exe //这将运行程序。

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 2022-01-23
      • 2012-02-06
      • 1970-01-01
      相关资源
      最近更新 更多