Я попытался повторить это и сразу же столкнулся с этой проблемой.После некоторой путаницы я нашел эту ссылку и понял, что мой тестовый проект был нацелен на x86 вместо x64.Дух ...
wsl.exe
и bash.exe
- это 64-битные файлы, хранящиеся в c:\Windows\System32
.Если вы попытаетесь запустить их из приложения x86, они, похоже, будут отсутствовать.Это связано с тем, что Windows отображает другую , 32-битную папку c:\Windows\System32
для 32-битных приложений.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");