BOOL CreateProcessW: 无法将参数 2 从“char [4]”转换为“LPWSTR” 错误的解决方法

来源:互联网 发布:java继承是什么意思 编辑:程序博客网 时间:2024/05/29 15:02

windows创建进程

编译环境:vs2013

代码如下所示:

#include "stdafx.h"#include <windows.h>int main(int argc, char* argv[]){  //创建进程 char szCommandLine[]="cmd"; STARTUPINFO si={sizeof(si)}; PROCESS_INFORMATION pi; si.dwFlags=STARTF_USESHOWWINDOW; si.wShowWindow=true; bool bRet=::CreateProcess(  NULL,  szCommandLine,  NULL,  NULL,  FALSE,  CREATE_NEW_CONSOLE,  NULL,  NULL,  &si,  &pi); if(bRet) {  ::CloseHandle(pi.hThread);  ::CloseHandle(pi.hProcess);  printf("新进程的进程ID号:%d\n",pi.dwProcessId);  printf("新进程的主线程的ID号:%d\n",pi.dwThreadId); }}

此段代码出自:http://www.cnblogs.com/iamscree/articles/2400475.html


在vs2013下运行上段程序时,出现如下错误:

e:\vs2013\test10-9\os2\os2\os2.cpp(59): error C2664: “BOOL CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION)”: 无法将参数 2 从“char [4]”转换为“LPWSTR”
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换


我们可以看到出现错误的原因是“无法将参数 2 从“char [4]”转换为“LPWSTR””

而在程序最开始,我们将参数2定义为了char类型,所以只要在一开始该店定义类型就可以了~


我的做法是:

<strong>wchar_t szCommandLine[] = _T("cmd");</strong>

大家可以参考下~~

1 0