我从以下程序中收到以下错误:CreateProcess failed(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,如果我将第一个参数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;
}
答案 0 :(得分:2)
错误2是
ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.
您指定的路径是针对不存在的文件,或者s2ws正在为您的字符串做一些时髦的事情。我们能看到s2ws吗?
答案 1 :(得分:1)
根据Windows error code documentation,错误2表示ERROR_FILE_NOT_FOUND
,错误3表示ERROR_PATH_NOT_FOUND
,两者都可能意味着exe不是您告诉Windows的地方。
答案 2 :(得分:1)
BAD:“... \ show_simulation.exe \”
GOOD:“... \ show_simulation.exe”
尝试从命令行输入“show_simulation.exe” - 你会明白我的意思:))
看起来s2ws()可能是附加不需要的尾部斜杠的罪魁祸首。