我从下面的程序得到以下错误:CreateProcess的失败(3)CreateProcess()函数。 GetLastError()返回3
int __cdecl main(int argc, char **argv)
{
USES_CONVERSION;
string name_of_bitmap;
cout << "Name of file: ";
cin >> name_of_bitmap;
string arguments = "F:\\windowsqnx\\maps\\show_simulation\\Debug\\show_simulation.exe " + name_of_bitmap;
const char * nob;
nob = arguments.c_str();
std::wstring stemp = s2ws("F:\\windowsqnx\\maps\\show_simulation\\Debug\\show_simulation.exe");
LPCWSTR path = stemp.c_str();
// runing simulation display process
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// Start the child process.
if (!CreateProcess(path,
A2W(nob) ,
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
Sleep(2000);
return 1;
}
}
我是新来的过程,不能找出我做错了。我读this并做了以下string arguments = "\"F:\\windowsqnx\\maps\\show_simulation\\Debug\\show_simulation.exe\" " + name_of_bitmap;
和std::wstring stemp = s2ws("\"F:\\windowsqnx\\maps\\show_simulation\\Debug\\show_simulation.exe\" ");
然后得到错误123,如果我NULL第一个参数CreateProcess(NULL,
我得到失败2.请帮助。
编辑
std::wstring s2ws(const std::string& s)
{
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
请使用正确的代码缩进。 –
通过检查你传递给'CreateProcess'的参数来调试。 's2ws'的使用在这里是相当不必要的。只需使用'path = L“...”'。哪个离开'A2W'。我们无法猜测那是什么。 –