C++ 使用createprocess()时的类型转换问题
我正在使用一个命令行应用程序,它期望参数生成所需的输出。我正在尝试使用C++ 使用createprocess()时的类型转换问题,c++,casting,C++,Casting,我正在使用一个命令行应用程序,它期望参数生成所需的输出。我正在尝试使用CPP中的createprocess()调用应用程序并传递参数。我在类型转换方面有困难。它说const char*与LPTSTR不兼容 如果我说 char a[]="param 1 param2"; createprocess("C:\\exmpl.exe",a,......) 我使用了L“C:\\exmpl.exe”,但它不起作用 您确定它不是CreateProcess?不管怎样,试试看 _T("C:\\exmpl.exe
CPP
中的createprocess()
调用应用程序并传递参数。我在类型转换方面有困难。它说const char*
与LPTSTR
不兼容
如果我说
char a[]="param 1 param2";
createprocess("C:\\exmpl.exe",a,......)
我使用了
L“C:\\exmpl.exe”
,但它不起作用 您确定它不是CreateProcess
?不管怎样,试试看
_T("C:\\exmpl.exe")
此宏将相应地将您的字符串扩展为宽字符串。您确定它不是
CreateProcess
?不管怎样,试试看
_T("C:\\exmpl.exe")
此宏将相应地将您的字符串扩展为宽字符串。试试看
TCHAR a[] = TEXT("param 1 param2");
CreateProcess(TEXT("C:\\exmp1.exe", a, ...);
如果应用程序设置为使用UNICODE,则文本宏用于将字符串更改为UNICODE。请尝试
TCHAR a[] = TEXT("param 1 param2");
CreateProcess(TEXT("C:\\exmp1.exe", a, ...);
如果应用程序设置为使用UNICODE,则文本宏用于将字符串更改为UNICODE。对不起,新答案:
注意第二个参数,它必须是TCHAR*(ANSI中的char*或UNICODE中的wchar\u t*)。
不要使用CONST CHAR*,或者说,不要简单地将“param1 param2”传递给第二个参数,这样做:
TCHAR param[] = TEXT("param1 param2");
CreateProcess(TEXT("my exe"), param, ...);
对不起,新答案:
注意第二个参数,它必须是TCHAR*(ANSI中的char*或UNICODE中的wchar\u t*)。
不要使用CONST CHAR*,或者说,不要简单地将“param1 param2”传递给第二个参数,这样做:
TCHAR param[] = TEXT("param1 param2");
CreateProcess(TEXT("my exe"), param, ...);
CreateProcess
需要此参数的可变(非const
)字符串。显然,您正在传入一个常量字符串
下次请粘贴您正在使用的实际代码。CreateProcess
需要此参数的可变(非-const
)字符串。显然,您正在传入一个常量字符串
下次请粘贴您正在使用的实际代码。您还可以将VC项目设置为多字节字符集。
只需转到项目属性,在常规选项卡上可以看到字符集。您还可以将VC项目设置为多字节字符集。
只需转到“项目属性”,在“常规”选项卡上可以看到字符集。对不起,这是一个输入错误。它是CreateProcessCompiler说const char*与不兼容LPCWSTR@Eric是哪一个。首先说它是LPTSTR
,现在说它是LPCWSTR
。CreateProcess中的第一个参数是LPCTSTR,第二个参数是LPTSTR。我试过了,TEXT(),L“”。什么都不管用me@Eric你只找过类型转换吗?对不起,那是打字错误。它是CreateProcessCompiler说const char*与不兼容LPCWSTR@Eric是哪一个。首先说它是LPTSTR
,现在说它是LPCWSTR
。CreateProcess中的第一个参数是LPCTSTR,第二个参数是LPTSTR。我试过了,TEXT(),L“”。什么都不管用me@Eric您是否只查找类型转换?如果以后不想使用unicode怎么办?您必须检查所有代码以替换这些事件。正确的方法是使用\u T
(见我的答案)。埃里克,这是一个非常没有帮助的说法。到底是什么不起作用?如果以后你不想使用unicode怎么办?您必须检查所有代码以替换这些事件。正确的方法是使用\u T
(见我的答案)。埃里克,这是一个非常没有帮助的说法。到底是什么不起作用?这不是你的实际代码。因此,它对试图帮助您的人没有帮助。这不是您的实际代码。因此,这对试图帮助你的人没有帮助。