none
关于CreateProcess用法的疑问 RRS feed

  • 问题

  • 我在DOS下执行命令

    
    d:
    cd speech\pocketsphinx\model\hmm\zh
    sphinx_fe -argfile tdt_sc_8k/feat.params -samprate 16000 -c arctic20.fileids -di . -do . -ei wav -eo mfc -mswav yes

    是正确的。(sphinx_fe是个exe文件,后面的为参数)

    但是我想在C++程序里调用这个exe文件,并传递参数进来,我用了CreateProcess函数,但是会出现错误,代码如下:希望高人指点!

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    	PROCESS_INFORMATION pf;
    	STARTUPINFO sf;
    	memset(&sf,0,sizeof(STARTUPINFO));
        sf.cb = sizeof(STARTUPINFO);
    	sf.wShowWindow=SW_HIDE;
    	sf.dwFlags=STARTF_USESHOWWINDOW;
    	LPWSTR szParam=_tcsdup(TEXT(" -argfile tdt_sc_8k\\feat.params -samprate 16000 -c arctic20.fileids -di . -do . -ei wav -eo mfc -mswav yes"));
    	if(!CreateProcess(TEXT("d:\\speech\\pocketsphinx\\model\\hmm\\zh\\sphinx_fe.exe "),szParam,NULL,NULL,false,0,NULL,NULL,&sf,&pf))
    		{
    			int dwError = GetLastError();
    			cout<<"CreateProcess failed"<<endl;
    			cout<<dwError<<endl;
    			
    			return 1;
    		}
    	else
    	{
    		cout<<"CreateProcess success,"<<endl;
    		 CloseHandle(pf.hProcess);
             CloseHandle(pf.hThread);
    		return 0;
    	}

    错误如下:
    ERROR: "cmd_ln.c", line 787: Cannot open configuration file tdt_sc_8k\feat.param
    s for reading
    ERROR: "sphinx_fe.c", line 1103: Command line parsing failed

    2013年5月3日 9:01

答案