我正在要从wsl上运行命令的Windows中运行c ++代码。
以下是命令:
ShellExecuteA(NULL, "open", "cmd", "bash -c \"rm -f /tmp/xyz.log\"" , NULL, SW_SHOW);
和
system("start \"bash -c \"rm -f /tmp/xyz.log\"\"");
我尝试了以上两种方法,但没有用。尽管这些命令可在WSL命令提示符下使用。
答案 0 :(得分:1)
我试图复制它并立即遇到此问题。经过一番困惑之后,我发现this link并意识到我的测试项目的目标是x86而不是x64。 h ...
wsl.exe
和bash.exe
是64位文件,存储在c:\Windows\System32
中。如果尝试从x86应用程序运行它们,则它们似乎丢失了。这是因为Windows对32位应用程序显示了一个不同,特定于32位的c:\Windows\System32
文件夹。 64位System32文件夹将出现在C:\Windows\Sysnative
下。
简单的解决方案是将目标更改为x64。完成后,甚至
system("wsl ls -la");
或
system("bash -c ls -la");
只是工作。
对于x86应用程序,解决方案是使用Sysnative
中的绝对路径,例如:
system("c:/windows/sysnative/bash -c ls -la");
或
system("c:/windows/sysnative/wsl -c ls -la");