События ошибок, когда CreateProcess использует путь: аргумент E0167 типа "char *" несовместим с параметром типа "LPWSTR" - PullRequest
0 голосов
/ 23 апреля 2019

Когда я использую команду CreateProcess в C ++ VisualStudio 2017, я выдаю сообщение об ошибке LPWSTR: Аргумент E0167 типа "char *" несовместим с параметром типа "LPWSTR".

Как я могу это исправить? Нижеследующий код является частью моего кода о проблеме. Спасибо за любые ваши предложения.

int main()
{
...
    ConnectToEngine("stockfish.exe");
...
}


void ConnectToEngine(char* path)
{
    pipin_w = pipin_r = pipout_w = pipout_r = NULL;
    sats.nLength = sizeof(sats);
    sats.bInheritHandle = TRUE;
    sats.lpSecurityDescriptor = NULL;

    CreatePipe(&pipout_r, &pipout_w, &sats, 0);
    CreatePipe(&pipin_r, &pipin_w, &sats, 0);

    sti.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    sti.wShowWindow = SW_HIDE;
    sti.hStdInput = pipin_r;
    sti.hStdOutput = pipout_w;
    sti.hStdError = pipout_w;

    CreateProcess(NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &sti, &pi);
}

1 Ответ

0 голосов
/ 23 апреля 2019

Проблема исправлена ​​с некоторыми заметками от друзей в выше. Рабочий код ниже:

    int main()
   {
    ...
    wchar_t a[] = L"stockfish.exe";
    ConnectToEngine(a);
    ...
   }


void ConnectToEngine(WCHAR* path)
{
    pipin_w = pipin_r = pipout_w = pipout_r = NULL;
    sats.nLength = sizeof(sats);
    sats.bInheritHandle = TRUE;
    sats.lpSecurityDescriptor = NULL;

    CreatePipe(&pipout_r, &pipout_w, &sats, 0);
    CreatePipe(&pipin_r, &pipin_w, &sats, 0);

    sti.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    sti.wShowWindow = SW_HIDE;
    sti.hStdInput = pipin_r;
    sti.hStdOutput = pipout_w;
    sti.hStdError = pipout_w;

    CreateProcess(NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &sti, &pi);
}

...