-1

我从下面的程序中得到以下错误: 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;
    }
}

我是流程新手,无法弄清楚我做错了什么。我阅读了这篇文章并执行了以下操作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\" ");然后如果我将第一个参数设为 NULL,则会出现错误 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;
}
4

3 回答 3

2

错误 2 是

ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.

您指定的路径用于一个不存在的文件,或者 s2ws 正在对您的字符串做一些奇怪的事情。我们可以看到 s2ws 吗?

于 2013-01-06T19:08:34.797 回答
1

坏:“...\show_simulation.exe\”

好:“...\show_simulation.exe”

尝试从命令行输入“show_simulation.exe\” - 你会明白我的意思:)

看起来 s2ws() 可能是附加不需要的斜杠的罪魁祸首。

于 2013-01-06T19:08:09.170 回答
1

根据Windows 错误代码文档,错误 2 表示ERROR_FILE_NOT_FOUND错误 3 表示ERROR_PATH_NOT_FOUND,两者都可能意味着 exe 不在您告诉 Windows 的位置。

于 2013-01-06T19:05:50.537 回答