如何在 Powershell 中运行 C++ 程序,就像在 CMD 中一样?

3

在CMD中,运行C++程序的命令是g++ 文件名.cpp,然后使用命令a.exe运行它,这将在CMD本身中打开输出。如何在PowerShell中执行类似的操作?我不能通过简单的命令a.exe打开文件。我做错了吗?


2
说实话,我过去一直在退缩。我在 PowerShell 中运行 cmd,然后像以前那样使用 cmd 的方式进行操作。 - user4581301
4
尝试这样做:./a - BLUEPIXY
1
在CMD中运行a.exe不会输出到“CMD本身”。cmd.exe、powershell.exe和a.exe都是控制台应用程序,它们在启动时将继承或创建一个控制台,由控制台子系统主机进程conhost.exe单独托管。如果您从cmd.exe运行a.exe,则它将继承cmd.exe的控制台作为其“StandardInput”、“StandardOutput”和“StandardError”文件句柄,而“CMD本身”的单个线程只是阻塞,直到a.exe退出。 - Eryk Sun
1
CMD自动搜索工作目录的行为是不安全的。您可以通过设置环境变量NoDefaultCurrentDirectoryInExePath来修复它。设置后,您还需要使用.\a在CMD中运行a.exe。但是,工作目录仍然可以显式地添加到PATH中作为“。”,这使您对其在整个搜索中的位置具有更多控制。 - Eryk Sun
每个人似乎都注意到你没有发布错误信息。我相信他们的猜测是正确的(PowerShell默认情况下不在当前目录中运行可执行文件),但你不应该让其他人去猜测。(记住,没有人能看到你的屏幕。) - Bill_Stewart
3个回答

2

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

& ".\a.exe" p1 p2 p3

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

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

由于.\a.exe不包含任何空格,因此不需要在其周围加上引号。 - Bill_Stewart

2

在PowerShell中运行g++ filename.cpp,它默认生成a.exe文件,在运行a.exe时会出现错误。

因此,请按照以下命令操作:

g++ filename.cpp -o filename.exe

filename.exe


1

[100%工作] 适用于Windows用户。打开终端(PowerShell),该终端需要在创建file.cpp的位置。

  1. g++ file.cpp//它将编译文件为a.exe
  2. .\a.exe//这将在Windows中运行程序。
  3. .\a.out//这将在Linux中运行程序。

数字3在大多数Linux shell上可能会出现错误,例如“ .a.exe不存在”或更危险地运行文件“.a.exe”,这将是工作目录中的隐藏文件。您可能想表达的是./a.exe在大多数Linux shell上可以正常工作。实际上,在powershell中也可以正常工作。 - Hydranix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接