首页 > 解决方案 > char* 与 C++ 的 LPWSTR 参数不兼容

问题描述

char* 与 LPWSTR 的参数不兼容

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);
}

还有其他方法可以解决这个问题吗?

标签: c++winapichar

解决方案


是的,这是真的。

如果您坚持使用char*参数,请调用CreateProcessA而不是CreateProcess. 否则,做path一个LPWSTR也把你的程序带入这个千年。


推荐阅读